函数.ajax跨域和mysql无法正常工作

时间:2011-12-23 11:31:26

标签: php jquery mysql ajax

我的代码有问题。我有一个执行jQuery函数的页面,获取请求的url中的查询在函数中用于执行2 INSERT个查询,但我只有一个。

JavaScript代码

$.ajax({
  type: "GET",
  url: "url on different domain",
  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');
    }
  }
});

请求的网址代码为:

<?php 
  header('Access-Control-Allow-Origin: *');
  header('Access-Control-Allow-Headers:X-Requested-With,Host,User-Agent,Accept,Accept-Language,Accept-Encoding,Accept-Charset,Keep-Alive,Connection,Referer,Origin'); 
  header("Access-Control-Allow-Methods: GET");

  $db = mysql_connect('localhost','usr','pwd') or die("Database error");   
  mysql_select_db('db', $db); 

  $dati_arr=explode("|", $termine); 
  $dati_insert['email']=$dati_arr[0]; 
  $dati_insert['pwd']=$dati_arr[1]; 
  $dati_insert['nome']=$dati_arr[2]; 
  $dati_insert['cognome']=$dati_arr[3]; 
  $dati_insert['tipo']=$dati_arr[4]; 

  $query="INSERT INTO ".$table." VALUES ('','".implode("','", $values)."')";   
  if(mysql_query($query)){$exec="ok";}
?>

但在我的数据库中,我有2条记录。

1 个答案:

答案 0 :(得分:0)

我怀疑你的所有代码都是写的

您的用户更有可能两次点击该按钮,或者出于其他原因,您的javascript调用被调用两次。无论哪种方式,您都应该有适当的保护措施,以防止一次性提交多个按钮。

您可以通过多种方式执行此操作,例如:

i)在'requestBeingProcessed'的javascript中有一个标志,在进行ajax调用之前检查它是否为false,然后将其设置为true直到处理请求。

ii)在处理请求时将执行此操作的按钮设置为“display:none” - 并用稍微旋转的图标替换按钮。

iii)在页面上有一个唯一的标识符,该标识符通过ajax调用传入 - 并且只允许使用该唯一标识符一次来提交该按钮。

我建议在你的ajax调用之前输入'alert(“调试信息”)',这样你就可以调查事件是否总是被触发两次,或者它是否只是用户,然后进行双击保护。

欢呼声 丹