2012-02-07 73 views
0

我有一个问题,调用一个ajax命令..所以问题是,在ajax已经调用了PHP页面(并已经在数据库中插入数据后)..成功的ajax调用应该重定向页面的其他地方....这是代码:Jquery Ajax调用需要暂停吗?

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "insertInfo.php", 
    timeout: 3000, 
    data: "name=" + myName + "&email=" + myEmail + 
       "&birthdate=" + myBirthdate + "&nickname=" + 
       myNickName + "&shirtcolor=" + myShirtColor + "&slogancolor=" + 
       mySloganColor + "&slogantext=" + mySloganText, 
     success: function(data) 
     { 
      if(data.operation=="completed") 
      { 
      window.location.href = "thank_you.php"; 
      }   
     } 
}); 

现在,当我把这个奇怪的事情发生了:

alert('test') 

调用Ajax出现之前。如果我把它,当然会出现消息框,! ajax完美工作,连接到数据库并重定向页面。

如果我拿走了警报框,没有任何反应,数据库没有被修改,也没有发生重定向。

我不明白哪里可能是问题...我是否需要暂停ajax调用?

Thnak你很多关于每个理智的解释:)


如果($( '信息用户形式')。有效的()){

   var myShirtColor = $('input[name="shirt"]').val(); 
       var mySloganText = $('input[name="shirtText"]').val(); 
       var mySloganColor = $('input[name="slogan"]').val(); 

       var myName = $('input#name').val(); 
       var myEmail = $('input#email').val(); 
       var myBirthdate = $('input#birthdate').val(); 
       var myNickName = $('input#nickname').val(); 



       $.ajax({ 
        type: "POST", 
        dataType: "json", 
        url: "insertInfo.php", 
        timeout: 3000, 
        data: "name=" + myName + "&email=" + myEmail + "&birthdate=" + myBirthdate + "&nickname=" + myNickName + "&shirtcolor=" + myShirtColor + "&slogancolor=" + mySloganColor + "&slogantext=" + mySloganText, 
        success: function(data){               
         if(data.operation=="completed") 
         {        
          window.location.href = "thank_you.php"; 
         } 

        } 
       }); 
      } 

好,所以这是在jQuery的document.ready里面......所有这一切......只是在ajax调用之前存在于alertbox中的一种情况...... 谢谢大家对你的回应,即使我不知道你期望什么,我会试着看看bugzilla。


所做的测试也与萤火虫...

所以,用Firebug处于运行状态时,JAX将保存在数据库中的数据,并会重定向页面。 Witgh萤火虫接近,将只保存数据,而无需重新引导

在Chrome中甚至没有保存数据....

+0

你在哪里把'警告添加此代码(测试)'? – gideon 2012-02-07 10:58:30

+0

您是否在控制台中发现任何错误? – 2012-02-07 10:58:45

+1

试着设置一个$(document).ready(function(){... do call ...})内的整个调用。 – 2012-02-07 10:59:30

回答

0

检查错误控制台和网络日志,看看发生了什么事情。另外一个可能的原因是,你正试图在DOM初始化之前从DOM获取输入值等。如果是这种情况,您可以将代码放入$(document).ready事件中。希望这有助于

+0

谢谢你的快速响应.... – 2012-02-07 11:26:55

+0

这是否解决了你的问题? – 2012-02-07 11:33:14

+0

但如果我把一个警报箱的值从字符串的DOM(我应该发送到Ajax到数据库)的字符串,字符串是正确的....似乎警报框缓慢eveyrthing和阿贾克斯可以工作正常... – 2012-02-07 11:34:09

0

所以搜索和各种测试后,我发现,如果我把选项

异步:在Ajax调用假

它完美(我将测试在Firefox,Chrome浏览器完美的作品..)..

有谁明白为什么?......这将是很好知道....谢谢

0

看来THA你正在验证一个表单。确保您的表单提交听众返回false

+0

它确实...否则我认为它不会与ajax调用之前的alertBox一起工作。但是,我真的很想知道为什么它应用async:false条件的原因... – 2012-02-09 16:18:02

+0

确实发生了某些事情当你放置警报('内'); after window.location.href =“thank_you.php”; ? – FreeCandies 2012-02-10 08:32:05

1
var queryString = "name=" + myName + "&email=" + myEmail + 
      "&birthdate=" + myBirthdate + "&nickname=" + 
      myNickName + "&shirtcolor=" + myShirtColor + "&slogancolor=" + 
      mySloganColor + "&slogantext=" + mySloganText""; 

data : queryString 

尝试添加此。

contentType: "application/json; charset=utf-8", 
type:'GET', 

,让你的价值观上insertInfo.php使用$_GET

重定向你的成功的功能

var url = "thank_you.php"; 
$(location).attr('href',url); 

其工作