jQuery的;如何返回ajax返回的数据?

时间:2014-08-07 07:34:43

标签: javascript jquery ajax function return

我试图返回如下的AJAX响应数据。

        function reqNodelistByField( i ) {
            $.ajax({
                type: 'post',
                url: './req.nodelist.by.field.php',
                dataType: 'text',
                data: { field_id:i },
                success: function(data) {
                    r = $.parseJSON(data);

                    if(r.valid === false) r = false;
                }
            });
            alert(r);

            return r;
        };

回应data非常完美。但是,我不知道如何在函数外返回data

我只能从alert(r)看到undefined

如何退回data

3 个答案:

答案 0 :(得分:0)

试试这个: -

function reqNodelistByField( i,callback) {
        $.ajax({
            type: 'post',
            url: './req.nodelist.by.field.php',
            dataType: 'text',
            data: { field_id:i },
            success: function(data) {
                r = $.parseJSON(data);
                callback(r);
                //if(r.valid === false) r = false;
            }
        });

    };

使用它像: -

reqNodelistByField("value of i",function(r){
// here you use the r i.e data from ajax request
// check  here 
  if(r.valid === false){
   }
});

答案 1 :(得分:0)

alert(r)未定义,因为您正在执行异步调用,换句话说,您的脚本会进行调用并继续执行代码而无需等待调用的响应。为此,您需要在ajax成功函数中返回r

 function reqNodelistByField( i ) {
            $.ajax({
                type: 'post',
                url: './req.nodelist.by.field.php',
                dataType: 'text',
                data: { field_id:i },
                success: function(data) {
                    r = $.parseJSON(data);

                    if(r.valid == false) {
                         return false
                    }
                    else{
                         return true
                     }
                }
            });
        };

答案 2 :(得分:0)

尝试完成Docs here

function reqNodelistByField( i ) {
            $.ajax({
                type: 'post',
                url: './req.nodelist.by.field.php',
                dataType: 'text',
                data: { field_id:i },
            }).done(function(r){
                alert (r)
                console.log(r)
                });
        };