在我看来,你有三个选择.
1.使用JSONP
JSONP允许您进行跨域ajax调用,以便您可以从其他域呼叫您的家庭服务器,而不会被阻止.
这可能是我想的最简单的路线.
JSONP通过动态地向文档中添加一个脚本,然后调用回调.
这些javascript文件的内容需要由服务器生成,您的PHP文件add-to-mysql.php将不得不回显这样的东西:
= htmlspecialchars($_GET["callback"]) =>('someData you want to return');
您可以访问通过$_GET数组从jQuery传入的一个参数,因为这只是一个GET请求.
从客户端可以这样称呼这条路线:
请注意,这将永远是一个GET请求,所有参数将通过URL.
‘callback’参数是这里的连接因子,它确保PHP端知道要生成的JavaScript函数.
$.ajax({
jsonp: 'callback',
dataType: "jsonp",
url: 'http://my-server.com/add-to-mysql.php',
data: { one: hash }, //an antikatastiso to hash me to a ke kano to md5 meso php sto ajax vgenei to idio
success: function(data) {
alert("success! X: " + data);
}
});
2.使用CORS
CORS将允许您对其他运行JS的域进行ajax调用.但是,这需要您从服务的html页面发送特殊的HTTP头,因此这需要您修改服务器.
看到这里有一个关于CORS的qucik介绍:
简而言之,您需要从服务的html页面设置的标题是:
Access-Control-Allow-Origin: http://domain.com
Access-Control-Expose-Headers: list,of,headers
3.发布到iFrame
发布隐藏的iFrame也是一个选择.
为此,您需要将表单的目标设置为iframe的名称,这里的优点是可以使用POST.您也可以通过jQuery提交并填写表单.
$('#one_input').val('someHash');
$('#myForm').submit();
如果您不想在页面上显示,您可以将所有内容放在隐藏的div中:
如果您不需要任何反馈,您也可以使用参数设置iframe的网址.
var hash = 'stuff';
document.getElementId('one_input').src="http://my-server.com/add-to-mysql.php?one=" + hash;
额外
你也可以使用iframe与Window.postMessage
基于上一个例子:
$('#my_iframe')[0].contentWindow.postMessage('hash', 'my-server.com');
但这需要您已经在您的iframe中加载了一个页面,然后将通过JavaScript接收消息,因此我不认为这是您要查找的内容.