点击注册表的按钮后,我在不同的域名上执行.ajax请求,特别是在主体域名的子域上,代码如下:
$.ajax({
type: "GET",
url: "http://sub.domain.com/query.php?s="+a,
crossDomain:true,
cache: false,
success: function(html){
alert(html);
},
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
},
statusCode: {
404: function() {
alert('page not found');
}
}
}在query.php中,我有三个头函数php和一个查询,但是当这个页面被调用时,我在db2记录中看到的是非常奇怪的。
query.php:
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers:X-Requested-With');
header("Access-Control-Allow-Methods: GET");
$db = mysql_connect('localhost','usr','pwd') or die("Database error");
mysql_select_db('dbname', $db);
$termine=$_GET['s'];
$dati_arr=explode("|", $termine);
$values = array_values($dati_arr);
$query="INSERT INTO tabella VALUES ('','".implode("','", $values)."')";
if(mysql_query($query)){echo "ok";}
?>一次查询,但我在数据库中找到两条记录,我找不到错误。
发布于 2011-12-27 19:45:43
当做跨域ajax时,浏览器可能会做所谓的preflight request -它基本上用OPTIONS的请求方法做一个请求,以确定服务器是否允许跨域请求,允许哪些http方法等等。如果验证无误,那么它会执行实际的请求(并且会记住OPTIONS请求的结果(取决于缓存策略),这样下一次它就不需要这样做了。
你的php代码没有区分印前检查请求和实际的'do-it‘请求,所以插入了两次数据。在采取除发回跨域头部之外的任何操作之前,您应该检查http方法。顺便说一句,GET请求会有副作用,这有点不可靠。
发布于 2011-12-27 17:41:09
你发布的代码一切正常。我认为张贴所有的html+js代码会更有用。
https://stackoverflow.com/questions/8642988
复制相似问题