首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.ajax跨域和MySQL不能正常工作

问.ajax跨域和MySQL不能正常工作
EN

Stack Overflow用户
提问于 2011-12-27 17:26:12
回答 2查看 298关注 0票数 0

点击注册表的按钮后,我在不同的域名上执行.ajax请求,特别是在主体域名的子域上,代码如下:

代码语言:javascript
复制
$.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:

代码语言:javascript
复制
<?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";}
?>

一次查询,但我在数据库中找到两条记录,我找不到错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-27 19:45:43

当做跨域ajax时,浏览器可能会做所谓的preflight request -它基本上用OPTIONS的请求方法做一个请求,以确定服务器是否允许跨域请求,允许哪些http方法等等。如果验证无误,那么它会执行实际的请求(并且会记住OPTIONS请求的结果(取决于缓存策略),这样下一次它就不需要这样做了。

你的php代码没有区分印前检查请求和实际的'do-it‘请求,所以插入了两次数据。在采取除发回跨域头部之外的任何操作之前,您应该检查http方法。顺便说一句,GET请求会有副作用,这有点不可靠。

票数 1
EN

Stack Overflow用户

发布于 2011-12-27 17:41:09

你发布的代码一切正常。我认为张贴所有的html+js代码会更有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8642988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档