我想提供一个可嵌入的javascript,它将从我的服务器获取脚本。这反过来将从用户(具有我的嵌入js的页面)获取一些细节并将其放回我的服务器。我如何实现这一目标。
这是我提供的嵌入式js。
<script>
(function() {
read="This is the data which is entered by the user";
var istreet = document.createElement('script'); istreet.type = 'text/javascript'; istreet.async = true;
istreet.src = 'http://xyz.com/a.php;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(istreet);
})();
</script>
上的代码
$('<div id="content"></div>').appendTo('body');
$('#content').html('
Some html to inject to the page\'s dom .
');
$.get("http://xyz.com/process.php?dataToProcess="+read,function(data){
alert(data);
});
但我看到$ .get(“http://xyz.com/process.php?dataToProcess=”+ read,function(data){ //导致跨域ajax请求
我不想解决跨域ajax问题。 我希望能够无缝地在双方(具有可嵌入脚本和我的服务器的那一方)之间进行通信。
答案 0 :(得分:0)
如果你需要做的只是一个GET请求,你可以使用JSON-P(http://en.wikipedia.org/wiki/JSON#JSONP)。
在JavaScript中,语法如下:
$.getJSON("http://xyz.com/process.php?dataToProcess=" + encodeURIComponent(read) + "&callback=?",
function(result){
alert(result);
});
“回调=?” property告诉JQuery这是一个JSON-P请求。 JQuery会用一些任意字符串替换“?” (详情请见http://api.jquery.com/jQuery.getJSON/)。
要使其正常工作,您还需要更改process.php处理程序。 PHP处理程序应首先读取“回调”查询参数的值,然后将响应包装在该值中。
例如,如果$ .getJSON()将参数“callback = abcd”发送到php页面,那么php页面应该返回:
abcd({"data": "json object with the result"});
有几点需要注意:
请务必使用encodeURIComponent()转义您发送到服务器的所有用户数据;
如果process.php修改用户数据,则在使用GET请求时应该小心,因为这可能导致XSRF攻击(http://en.wikipedia.org/wiki/Cross-site_request_forgery)。
答案 1 :(得分:0)
我用这个跨域iframe黑客在两个不同的域之间进行通信。我建议阅读这个
http://softwareas.com/cross-domain-communication-with-iframes