关于$.ajax()跨域获取jsonp格式的数据疑惑


根据jquery的文档里写的格式
$.ajax({


 type:"POST",
url:"xxx.xxxx.com/1",
dataType:"jsonp",
timeout:"2000",
success:function(data){
    console.log(data)
}

})

服务器上的1.json文件内容为
jsonp({"name":'123"})

问题出现在success这一步,每次我执行代码就会出现jsonp未定义的报错,只能在$.ajax外部添加一个方法function jsonp(data){console.log(data)}来获取jsonp数据,同时要把success这步删除。这究竟是什么道理呢?

jsonp Ajax 跨域

tokidai 9 years, 9 months ago

JSONP 实质就是在HTML里插入 <script></script> ,因此请求的数据即是要执行的脚本。当你返回


 jsonp({"name":'123"})

时候,意思要执行 jsonp 这个函数

所以如果没有定义该函数,会 Error

吴克的叔叔葛炮 answered 9 years, 9 months ago

jasonp是利用dom添加script实现的。当然不能那么做了。

永远的真实 answered 9 years, 9 months ago


 {
             type: "get",
             async: false,
             url: url?code=aaa,
             dataType: "jsonp",

             jsonpCallback:"jsonpHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
             success: function(json){
                 alert('您查询到信息:价格: ' + json.price + ' 元,还剩: ' + json.tickets + ' 张。');
             },
             error: function(){
                 alert('失败了!');
             }
         }

THE YAN answered 9 years, 9 months ago

Your Answer