来自ajax post call的json解析错误

时间:2014-03-04 09:28:35

标签: jquery ajax json cordova

嗨我正在开发一个cordova 2.7.0 phonegap应用程序。我正在向web控制器发送餐馆ID以获取该restaurant.backend的详细信息在zend框架中但响应是调用错误函数,错误显示-json解析错误和意外的令牌< 我非常困惑。请帮助我。

我已经尝试过的事情: 如果我更改了网址,它会更改错误名称,因此错误可以在网址中,我不确定这是否是跨域问题。

这是我的代码

function somefunction() 
{
    alert("called");
    var resid = sessionStorage.getItem("ids");
    alert(resid);
    $.ajax({
        url : 'http://app.mywebsitename.com/takeaway/detail',
        cache : false,

        type : 'GET',
        dataType : 'json',

        crossDomain : true,
        success : function getRestaurantSuccess(data, status) {
        alert("success");           },
        error : function(jqXHR, textStatus, errorThrown) {

            alert(textStatus);
            alert(errorThrown);
        }
    });
}

2 个答案:

答案 0 :(得分:0)

你必须在这里改变两件事:

您必须将dataType:'json',更改为dataType:'jsonp'

并更改您的成功功能

success : function getRestaurantSuccess(data, status) {

到这个

success : function (data, status) {

因为您的网址似乎是跨域请求,并确保响应类型为json,而且必须来自您的服务器端。


在您的帖子中找到我将餐馆ID发布到网络控制器
我没有发现你在你的ajax函数中发送它。所以你的最终代码应该是:

function somefunction() {
    alert("called");
    var resid = sessionStorage.getItem("ids");
    alert(resid);
    $.ajax({
        url: 'http://app.mywebsitename.com/takeaway/detail',
        cache: false,
        data: {resid : resid}, // pass the res id here
        type: 'GET',
        dataType: 'jsonp', // change to jsonp for cross domain
        crossDomain: true,
        success: function (data, status) { // update your success function
            alert("success");
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(textStatus);
            alert(errorThrown);
        }
    });
}

答案 1 :(得分:0)

错误:“显示-json解析错误和意外令牌<”这意味着:服务器的数据格式响应不正确。在客户端,你设置dataType是'json'但是数据响应不是json数据或者可能是xml(我不确定,你应该再次检查),ajax解析数据并找到'<'从服务器进入数据响应。