2012-08-14 40 views
0

當我在Firebug中調試代碼時,它工作正常 - 它在我的數據庫中插入記錄並重定向到一個URL。但它不起作用。當我不使用調試器時,它給了我一個錯誤,alert('error')。爲什麼? val是一個序列化數組,這個Ajax適用於調試(Firebug),但不是沒有它

$('#target').submit(function() { 
    if (validation == true) { 
     $.ajax({ 
      type: "POST", 
      url: "some url", 
      dataType: "jsonp", 
      data: val, 
      success: function(data, textStatus) { 
       alert('success'); 
      }, 
      error: function(data) { 
       alert("error"); 
      } 
     }); 
    } 
    else { 
     return false; 
    } 
});​ 

//PHP Code 
$return['url']= "/index.php?action=jobSeeker/jobSeekerRegistrationConfirmation"; 
echo $_GET['callback']."(".json_encode($return).");"; 
+2

錯誤函數通過三個參數。其中一個(最後一個)可能會告訴你問題是什麼。另外,如果你在調試器中,使用網絡嗅探來真正計算出傳回的內容。 – Robbie 2012-08-14 02:46:11

回答

2

你說當這種行爲正確時,你指示用戶到一個新的URL。如果是這樣的話,在JS成功電話有機會執行之前,這可能是你的表單提交併重定向到一個新頁面的問題嗎?

如果更改

$('#target').submit(function() { 

$('#target').submit(function(e) { 
    e.preventDefault(); 

您的$就成功回調應該運行,那麼你將需要繼續URL與JS的幫助下重定向。

0

我覺得你的問題是這樣的,

你都使得POST要求與ajax,但是在PHP

echo $_GET['callback']."(".json_encode($return).");"; 

尋找$_GET,因此響應不會是一個有效的jsonp格式化一個。雖然執行會更新數據庫。這是得到錯誤的原因。 重定向也將成功,因爲它與ajax success沒有任何關係。

相關問題