Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当数据类型设置为JSONP时读取JSON响应_Javascript_Jquery_Ajax_Cross Domain_Jsonp - Fatal编程技术网

Javascript 当数据类型设置为JSONP时读取JSON响应

Javascript 当数据类型设置为JSONP时读取JSON响应,javascript,jquery,ajax,cross-domain,jsonp,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',

我正在尝试发出一个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}
,有没有办法解析它?

使用数据类型:'json'

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

您是否尝试更改如下数据:
var jsonBuilder=JSON.stringify(数据:{firstName:'firstName',lastName:'lastName',电子邮件:'email@yopmail.com'     });?如果服务器不支持JSONP,则无法向其发出JSONP请求。故事结束了。唯一的方法是通过服务器上的脚本代理请求。如果尝试
complete
方法中的
jqXHR.responseText
error
方法中的
xhr.responseText
中的
console.log
会发生什么?没有办法。JSONP只是使用动态创建的
script
元素(例如
)从不同的URL包含一个JavaScript文件。如果
some/script
没有返回有效的JavaScript,那么您就倒霉了。JSON不是有效的JavaScript。服务器必须支持JSONP。也许会有帮助。@PulkitMittal:你有两个选择。1) 编辑服务器以输出JSONP响应(将JSON封装在函数调用中,并使用
text/javascript
content-type),或2)向该页面所在的服务器发出JSON(AJAX)请求,并使用代理脚本从另一台服务器获取JSON。