jQM $ .post和$ .ajax之间的差异,我得到$ .post的错误

时间:2014-07-14 07:17:09

标签: jquery ajax jquery-mobile

在我的混合应用程序中(使用jQM作为框架),我尝试从服务器检索数据。

我尝试了 $。发布 $ .ajax 方法。

使用 $。ajax ,我可以使用“data [0] .name”访问返回数据。

使用 $。发布和完全相同的返回数据,当我尝试使用“data [0] .name”访问数据时,我得到“undefined”

我的代码有效($ .ajax)并向我显示正确的数据:

$(document).on('pagebeforeshow', '#restaurantList', function() {
    $.ajax({
    url: "http://mydomain.com/api/restaurant/allstate/allcuisine",
    type: "POST",
    dataType: "json",
    success: function (data) {
        alert(data[0].restaurant_id);
    }
    });
    });

我的代码不起作用($ .post)并给我“未定义”:

$(document).on('pagebeforeshow', '#restaurantList', function() {
    $.post("http://mydomain.com/api/restaurant/allstate/allcuisine",
    function(data){
        alert(data[0].restaurant_id);
    });
    });

为什么?我需要使用 $ .post ,但我无法访问数据。我检查了返回JSON,两种方法都返回完全相同的数据。

请指出这两者之间的区别以及为什么我从 $ .posst 方法获得“undefined”。谢谢。

1 个答案:

答案 0 :(得分:1)

使$ .post能够正常使用JSON返回数据。必须指定dataType。

根据jQM文件:

  

dataType类型:String服务器所需的数据类型。   默认值:智能猜测(xml,json,脚本,文本,html)。

但它的智能猜测似乎并不够智能。

为此,请添加" json",以下示例:

$(document).on('pagebeforeshow', '#restaurantList', function() {
    $.post("http://mydomain.com/api/restaurant/allstate/allcuisine",
    function(data){
        alert(data[0].restaurant_id);
    }, "json");
    });