2011-05-29 102 views
1

我想返回一個確認的JSON對象回到我的AJAX函數。由於某些原因,即使帖子成功(200),錯誤回調函數總是被調用。我正在將返回的JSON記錄到一個文件中以進行dubgging,並且它看起來是正確的。我無法弄清楚爲什麼會發生這種情況。有人可以提出建議嗎?jQuery - 爲什麼始終調用Ajax()錯誤回調?

PHP控制器動作(CI):

public function sendMail() 
    { 
     $senderName = trim($_POST['senderName']); 
     $returnEmail = trim($_POST['returnEmail']); 
     $message = trim($_POST['message']); 


     if (valid_email($returnEmail)) 
     { 
      send_email('[email protected]','Website Email From: '.$senderName, $message); 
      $success = array('success'=>'Mail Sent'); 

      //Debugging to file 
      $myFile = "testFile.txt"; 
      $fh = fopen($myFile, 'w') or die("can't open file"); 
      $stringData = json_encode($success); 
      fwrite($fh, $stringData); 
      fclose($fh); 


      echo json_encode($success); 
     } 
     else 
     { 
      $errorMessage = array('error'=>'Invalid Email Address'); 
      echo json_encode($errorMessage); 
     } 
    } 

}

JS:

$.ajax({ 
        type: "POST", 
        url: "http://domain.com/index.php/mail/sendmail", 
        data: {senderName: senderName, returnEmail: senderAddr, message: message }, 
        dataType: "JSON", 
        success: function(msg){ 
        console.log(msg); 
        }, 
        error: function(data){ 
         alert("Something went wrong"); // possible that JSON wasn't returned 
        } 
       }); 

回答

3

問題是我沒有使用相對URL作爲目標。我相信這個問題是一個跨域腳本問題。我將url屬性更改爲index.php/mail/sendmail,一切正常。

$.ajax({ 
       type: "POST", 
       url: "index.php/mail/sendmail", 
       data: {senderName: senderName, returnEmail: senderAddr, message: message }, 
       dataType: "JSON", 
       success: function(msg){ 
       console.log(msg); 
       }, 
       error:function (xhr, ajaxOptions, thrownError){ 
        var x = xhr; 
        var y = ajaxOptions; 
        var z = thrownError; 
       } 
      }); 
0

error回調需要長達參數:XHR對象,錯誤串,和一個可選的異常對象。接受最後兩個,他們應該告訴你發生了什麼事。

您可能還想使用Firebug,Dragonfly或Chrome的開發人員工具等調試器來查看請求是否如您所想的那樣成功。

+0

@Eevee,什麼是蜻蜓,我從來沒有嘗試過。 – kobe 2011-05-29 04:36:57

+0

Opera的調試器:http://www.opera.com/dragonfly/ – Eevee 2011-05-29 04:39:05

+0

我使用螢火蟲..我知道這個帖子正在工作,因爲在這種情況下,電子郵件被髮送。我想看一下XHR對象的提示。謝謝 – Nick 2011-05-29 04:41:13