2012-02-07 70 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); 

其工作