为了账号安全,请及时绑定邮箱和手机立即绑定

关于 jsonp 的一些疑问

关于 jsonp 的一些疑问

皈依舞 2019-05-12 09:14:58
想知道,在利用jsonp实现跨域的时候,在服务端返回数据,把数据作为参数放到回调函数中`callback(JSON.stringify(data))`但是此时服务端返回的应该是个字符串呀,浏览器是如何直接把这个返回的字符串当成js代码执行的?完整代码如下//jsfunctionjsonp(url){//创建script标签varscript=document.createElement('script')script.src=urlscript.id='jsonp'document.getElementsByTagName('body')[0].appendChild(script)//移除标签,清除占用内存script.onload=()=>{document.getElementsByTagName('body')[0].removeChild(script)script=null}}functionsendHaha(msg){console.log(msg)}jsonp('http://localhost:3333/haha?callback=sendHaha')//服务端varhttp=require('http')varurllib=require('url')vardata={data:'hhh'}http.createServer((req,res)=>{varparams=urllib.parse(req.url,true)varcallback=params.query.callbackif(callback){varstr=`${callback}(${JSON.stringify(data)})`res.end(str)}}).listen(3333,()=>{console.log('haha')})谢谢大佬的解答~~感激不尽
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

${callback}(${JSON.stringify(data)})改成:
`${callback}({${JSON.stringify(data)}})`
刚才我写错了,你不用该的,你只需要再你回调方法里处理就行了:
functionsendHaha(msg){
vardata=JSON.parse(msg);
}
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 477 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号