淺析jquery ajax非同步呼叫方法中不能給全域變數賦值的原因及解決方案_jquery

來源:互聯網
上載者:User

在調用一個jquery的ajax方法時我們有時會需要該方法返回一個值或者給某個全域變數賦值,可是我們發現程式執行完後並沒有擷取到我們想要的值,這時很有可能是因為你用的是ajax的非同步呼叫async:true(預設情況),如:

複製代碼 代碼如下:

function ManageCommentText(text) {
var result = text;
$.ajax({
data: "get",
url: "GetComments.aspx",
data: "type=getText&commentText=" + text,
cache: false,
async: false,
success: function (data) {
result = data;
}
})
return result;

以上方法是ajax的同步調用,只有在擷取到了data值並賦值給result以後才會返回result完成該方法的調用。若設為async:true,
則會未等到擷取data值就已經返回了result。

另一個解決辦法就是將你的代碼直接寫到success方法裡。(根據你的業務並不是所有的都可以直接寫到success裡的)。

注意:如果設定為 async: false,就失去 ajax非同步優點了哦。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.