我知道有很多关于此的问题,但它们似乎都没有回答我的特定问题。
我在构建包含ajax调用的函数时遇到问题,然后返回一个值。我目前正在使用:
hmis_query_temp_scalar: function(query_name) {
return $.ajax({
url: '/php_scripts/query_temp_scalar.php',
data: {query_name: query_name},
async: false
}).responseText
}
但是我想让它异步,但是如果我将其更改为async: true
它不起作用,我只是得到未定义的值。有没有办法做到这一点?
我目前使用该功能的方式如下:
该页面加载以下脚本:
$(document).ready(function() {
$.setQueryLink('active_clients', '1');
$.setQueryLink('active_clients_u18', '1');
$.setQueryLink('active_clients_19_59', '1');
$.setQueryLink('active_clients_o60', '1');
...
调用以下内容:
setQueryLink: function(query_name, type) {
var object = "#" + query_name;
var value = $.hmis_query_temp_scalar(query_name);
$(object).html(value);
$(object).attr('href', "/standard_queries.php?query=" + query_name + "&type=" + type);
}
有更好的方法吗? (我知道它似乎应该在PHP中完成,但这不是我想要的,我想要javascript的异步加载行为)我没有看到任何但是有任何原因我不能异步运行这个?
答案 0 :(得分:1)
你想要做的就是将它们分开......为你的请求提供成功函数,当它返回时,然后根据响应采取行动。
即。
$.ajax({
type: 'POST',
url: 'formService.asmx/RemoveFieldOption',
contentType: 'application/json; charset=utf-8',
data: "{'fieldId':'1', 'optionId':'1'}",
dataType: 'json',
success: action_removeFieldOptionPass,
error: ajaxTestFail
});
function action_removeFieldOptionPass(result) {
$('#whatever').html(result);
}