some.js能够使用XMLHttpRequest将数据发布到abc.com吗?换句话说,因为我们从那里加载了Javascript,abc.com是隐式受信任的吗?
否,因为脚本已加载到单独的域,所以它无权访问…
如果您信任数据源,那么JSONP也许是更好的选择。JSONP涉及将新的script元素动态添加到页面中,并将SRC设置为另一个域,并在查询字符串中将回调设置为参数。例如:
function getJSON(URL,success){ var ud = 'json'+(Math.random()*100).toString().replace(/./g,''); window[ud]= function(o){ success&&success(o); }; document.getElementsByTagName('body')[0].appendChild((function(){ var s = document.createElement('script'); s.type = 'text/javascript'; s.src = URL.replace('callback=?','callback='+ud); return s; })());}getJSON('http://YOUR-DOMAIN.com/script.php?dataName=john&dataAge=99&callback=?',function(data){ var success = data.flag === 'successful'; if(success) { alert('The POST to abc.com WORKED SUCCESSFULLY'); }});
因此,您将需要托管自己的脚本,该脚本可以使用PHP / CURL发布到abc.com域,然后以JSONP格式输出响应:
我对PHP不太满意,但是也许是这样的:
<?php $postURL = $_GET['posturl']; $postData['name'] = $_GET['dataName']; $postData['age'] = $_GET['dataAge']; $postResponse = 'blahblahblah'; $postSuccess = TRUE; echo $_GET['callback'] . '({'; echo "'flag':' . $postSuccess . ',"; echo "'response':' . $postResponse . '})";?>
因此,您可以控制的服务器将充当客户端和abc.com之间的媒介,您将以JSON格式将响应发送回客户端,以便Javascript可以理解和使用…
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)