从jQuery ajax函数返回一个值

时间:2010-08-12 17:46:36

标签: jquery ajax

我知道有很多关于此的问题,但它们似乎都没有回答我的特定问题。

我在构建包含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的异步加载行为)我没有看到任何但是有任何原因我不能异步运行这个?

1 个答案:

答案 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);
}