如何将变量 (var) 分配给从对服务器的 ajax 调用返回的 json 对象?我需要在 body 的其余部分访问该对象。
例如,我试过这个,我不知道它是否正确。
var selectValues=$(document).ready(function() {
$.ajax({
type: "POST",
url: "http://10.0.2.2/mobileajax/callajax.php",
data: ({name: theName}),
cache: false,
dataType: "text",
success: onSuccess
});
})
var $vendor = $('select.mobile-vendor');
var $model = $('select.model');
$vendor.change(
function() {
$model.empty().append(function() {
var output = '';
$.each(selectValues[$vendor.val()], function(key, value) {
output += '<option>' + key + '</option>';
});
return output;
});
}).change();
// bonus: how to access the download link
$model.change(function() {
$('a#download-link').attr('href', selectValues[$vendor.val()][$model.val()]).show();
});
请注意,变量 selectValues
用于正文的其余部分。
最佳答案
我认为您应该在 $(document).ready(function()
函数中完成整个代码,然后使 ajax 调用同步。因为现在将在文档时进行 ajax 调用准备好了,但是其他代码会直接运行,不需要等待文档准备好。另外ajax调用默认是异步的,所以你应该让它同步,并在success里面赋值selectValues
变量ajax调用的函数,会变成这样:
$(document).ready(function() {
var selectValues;
$.ajax({
type: "POST",
url: "http://10.0.2.2/mobileajax/callajax.php",
data: ({name: theName}),
cache: false,
dataType: "text",
async: false,
success: function(data) {
selectValues = data
}
});
var $vendor = $('select.mobile-vendor');
var $model = $('select.model');
$vendor.change(
function() {
$model.empty().append(function() {
var output = '';
$.each(selectValues[$vendor.val()], function(key, value) {
output += '<option>' + key + '</option>';
});
return output;
});
}).change();
// bonus: how to access the download link
$model.change(function() {
$('a#download-link').attr('href', selectValues[$vendor.val()][$model.val()]).show();
});
})
关于javascript - 使用jquery将ajax调用返回值分配给var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092829/