关于$.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这步删除。这究竟是什么道理呢?

阅读 9.4k
3 个回答
{
             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('失败了!');
             }
         }

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进