当dataType设置为JSONP时读取JSON响应

时间:2013-01-31 15:36:00

标签: javascript jquery ajax cross-domain jsonp

我正在尝试发出允许跨域的JSONP请求。情况是我的服务器不处理JSONP请求,并且它将此请求理解为JSON并使用JSON对象进行响应:{result: 1}

这是我的ajax请求:

jQuery.ajax({
    type : 'POST',
    url : "https://example.com/addUser",
    data : {
        firstName : 'firstName',
        lastName : 'lastName',
        email : 'email@yopmail.com'
    },
    crossDomain : true,
    jsonpCallback: "jsonpCallback",
    success : function(data) {
        alert(data);
    },
    complete : function(jqXHR, textStatus) {
                //can do something here
    },
    error : function (xhr, textStatus, errorThrown) {
        if(errorThrown=="jsonpCallback was not called") {
                console.log('caught it!');
        }
            },
    dataType : 'jsonp'
});

来自窗口控制台的读数:

Resource interpreted as Script but transferred with MIME type text/json: "https://example.com/addUser…Name=firstName&lastName=lastName&email=email%40yopmail.com&_=1359646137496".

Uncaught SyntaxError: Unexpected token : 

caught it!

正如预期的那样,它会抛出parseerror异常并尝试处理它。但我的问题是,由于浏览器实际上得到了响应{result:1},有没有办法可以解析它?

1 个答案:

答案 0 :(得分:-1)

使用数据类型:'json'

$.ajax({
 url: getinstruments,
  dataType: 'json',
  success: function(data) {
  alert (data.firstName);
}
});