2012-11-27 56 views
1

我遇到了麻煩ajaxSubmit會捕獲錯誤:ajaxSubmit會錯誤捕獲

$(document).ready(function(){ 

     $("#supportForm").validate({ 
       rules: { 
       //validation 
       }, 

       messages: {    
       //messages 
       }, 

       submitHandler: function(form) { 
        $(form).ajaxSubmit({ 
         url:"ajax/supportform", 
         type:"GET", 
         dataType: 'json', 
         error: function() { alert('error'); }, 
         success: function() {alert('success'); }, 


        }); 
       } 

     }); 
    }) 

什麼我在我的PHP腳本得到它火的錯誤事件返回?

我試圖與錯誤=> 0,出口(json_encode(「錯誤」 =>返回一個數組「0」);等等

+0

改變URL的東西,不存在 - 這會給你錯誤練習 –

+0

我不是一個PHP開發人員,但不會簡單地拋出一個異常在你的PHP代碼(而不是捕捉它)讓Ajax調用失敗? –

+0

@Francis Gagnon,這取決於最終的錯誤處理。一個簡單的PHP語法錯誤或者其他東西不會導致Ajax調用失敗。 –

回答

4

見麥克·德克勒克的鏈接,它提供的線索,什麼必須做以捕獲錯誤:

看起來成功&錯誤回調與傳遞布爾錯誤/成功消息無關,但僅在成功調用url時才起作用。我希望我沒有收到錯誤結果,因爲我使用的是始終返回某種內容的CMS - 即使它是404或403頁面。

無論如何,我不得不從我的PHP腳本返回一個JSON字符串:

<?php 


$response = json_encode(array("error" => "false","message" => "this is the error message")); 

return $response; 

然後解析它在我成功的回調:

submitHandler: function(form) { 
     $(form).ajaxSubmit({ 
      url:"ajax/supportform", 
      type:"POST", 
      dataType: 'json', 

      error: function(data) { alert(data); }, 

      success: function(response) { 

      var obj = jQuery.parseJSON(response); 

      if(obj.error == "true"){ 
       alert('error is true'); 
      }else{ 
       alert('error is false') 
      } 

      }, 


     }); 
    } 
2

編輯:顯示一些特定的錯誤描述從PHP你應該到來讀了這個問題:jQuery Ajax error handling, show custom exception messages

讓你的服務器產生一定的誤差,用PHP你可以做這樣的

<?php 
header("HTTP/1.0 404 Not Found"); 
?> 

退房頭功能的文檔:http://nl.php.net/manual/en/function.header.php

你在這裏做的是給你的瀏覽器提供不屬於典型HTML源代碼的數據,通過它,瀏覽器知道出了什麼問題。

實際上,您可以將所需的所有元數據添加到網頁請求的標題中,但是當瀏覽器不知道它的含義時,它會被忽略。請參閱定義或狀態代碼在這裏:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

+0

+1,對於應用程序錯誤,500代碼可能會更有效,儘管 – sroes

+0

返回頭中的404響應,但文檔本身沒有數據 - ajax請求期待數據回退。 (json)官方文檔沒有幫助,錯誤回調沒有在任何示例中。 –

+0

@Sean Kimball,我明白你想要一個特定的錯誤消息,而不是僅僅嘗試你的錯誤處理器上的一些連接錯誤或什麼?看到編輯是我提出的答案。 –

0

變更網址的東西,不存在強制錯誤

  function(form) { 
       $(form).ajaxSubmit({ 
        url:"ajax/supportform001", 
        type:"GET", 
        dataType: 'json', 
        error: function() { alert('error'); }, 
        success: function() {alert('success');} // <-was an extra comma 
       }); 
      } 
+0

也不起作用 - 網站的404頁面會返回[包含結果中的數據],但總會觸發成功回調。 –