ajax回调JSON对象返回undefined

时间:2013-02-18 22:46:27

标签: javascript jquery ajax object asynchronous

我看了很多关于这个主题的帖子,并尝试了几种解决方案,但我似乎无法做到正确。

最后一次尝试

function checkzip(x){  

       $.ajax({
       type:'POST',
       url:'zipcheck.php',
       data:{zip: x},
       async: false
    }).done(function(r){
        rates(r);
    });
}

function rates(r){
    alert (r);
    if (r !== 'none'){
    m = JSON.parse(r);
    return m;
    }
    else {
        return false;
    }
}
返回的json是{“rateA”:“125”,“rateB”:“80”,“rateC”:“150”,“rateD”:“130”}

所以我希望能够:

new_rate = checkzip('77090');

alert (new_rate.rateA);

但是我的返回值

未定义

我尝试在成功中传递函数:AND .done(),我尝试直接从两者返回它,而不是在设置async:false时传递给单独的函数。 我试过在zipcheck()函数中放置带有函数的ajax调用,然后在那里调用它。 我遗漏了从ajax创建对象或使用异步函数的行为。

1 个答案:

答案 0 :(得分:0)

你认为你的问题与异步性有关是正确的。你基本上需要在rates()函数中对响应进行任何处理,而不是让checkzip()返回一个值。如果你将alert()调用放在rates()方法中,你应该会看到一些输出。

function checkzip(x) {  
       $.ajax({
       type:'POST',
       url:'zipcheck.php',
       data:{zip: x},
       async: false
    }).done(function (r) {
        rates(r);
    });
}

function rates(r) {
    alert(r);
    if (r !== 'none') {
        var m = JSON.parse(r);
        // Do something with m now.
        alert(m.rateA);
    }
}