2012-02-27 52 views
1

這是以前工作,我不記得改變任何東西。我有一個表單,它將信息發送到「處理」php文件,並且應該得到迴應。相反,它只是「處理」php並在新頁面上回顯JSON數據。 jquery包括谷歌和表單頁面和「進程」頁面都在同一目錄中。Ajax請求轉到新頁面而不是更新當前頁面?

$data = array( 
    'status' => $status, 
    'message' => $errorMsg 
); 

echo json_encode($data); 

if ($status == "success"){ 
session_destroy(); 
} 
exit(); 

所以這是它在所有的處理結束(確保數據是好的,所有的這些工作得很好)。這是使用的JavaScript:

$(document).ready(function(){ 
    $('#signupForm').submit(function(){ 
//various client side checks to keep form from submitting easy to see garbage 

if($(this).data('formstatus') !== 'submitting'){ 
    var responseMsg = $('#response'); 
    responseMsg.hide() 
       .addClass('response-waiting') 
       .text('Signing Up...') 
       .fadeIn(200); 



var dataString = //the data 
$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: dataString, 
    success: function(data) { 


      var responseData = jQuery.parseJSON(data), 
       messageClass = ''; 

      switch(responseData.status){ 
       case 'error': 
        messageClass = 'response-error'; 
       break; 
       case 'success': 
        messageClass = 'response-success'; 
       break; 
      } 

      responseMsg.fadeOut(200,function(){ 
       $(this).removeClass('response-waiting') 
         .addClass(messageClass) 
         .text(responseData.message) 
         .fadeIn(200,function(){ 
          setTimeout(function(){ 
           responseMsg.fadeOut(200,function(){ 
            $(this).removeClass(messageClass); 
           }); 
          },5000); 
         }); 


      }); 


     } 
}); 
} 

return false; 


}); 
}) 

如果有什麼具體的東西我應該找,請讓我知道,我會更新。就像我說的那樣,我已經在工作(昨天),我不記得改變任何事情,除非在頂部拿出客戶端支票,我知道這根本不重要。

回答

0

我假設你的表單動作是標題process.php,並且你沒有在提交時返回false。

它應該是這樣的

<form name='myForm' action='nonjspage.php' method='post' onsubmit='return false;'></form> 

如果錯誤仍然繼續,那麼它不是你的形式,但在JavaScript錯誤。根據您使用的瀏覽器有錯誤控制檯。

在Firefox中,您可以進入菜單 - > web開發人員 - > Web控制檯。

一旦你打開了這個頁面,重新加載頁面並再次按下提交按鈕,它會給你提供關於你的javascript錯誤的信息。

+0

我一直忘記檢查Web控制檯。它最終成爲一個無關腳本中的錯誤,這就是爲什麼我沒有看到它。 – townie 2012-02-27 02:27:55

2

有幾件事可能會幫助解決這個問題。

首先,建議不要使用return false來停止通常發生的點擊事件。

這是最好的做法是在功能上做

preventDefault(); 

看到http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

這應該提交,因此加載後頁面,而不是做Ajax調用停止形式。

第二個問題是你有一個返回虛假的電話顯然沒有被擊中。上述修復會阻止表單提交,無論如何,但我猜你在開始和返回false之間的代碼中有一個javascript錯誤。這將拋出一個異常,因此返回false將永遠不會被調用。一旦上述修復程序被放入並停止重定向,請檢查您的瀏覽器中的控制檯是否有異常情況。

乾杯

+0

好吧,它最終成爲一個無關腳本中的錯誤,但感謝最佳做法。我會把它用來使用。 – townie 2012-02-27 02:29:29

相關問題