想知道,在利用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);}
添加回答
举报
0/150
提交
取消
