2015-12-30 91 views
0

我爲我的網站使用PHP,Javascript,AJAX。爲什麼控件沒有從PHP文件返回到AJAX成功函數?

我在下面只提供了必要的代碼。

JS代碼(AJAX功能代碼):

$("#btn_add_event").click(function(){ 

    var strSeriaze = $("#formAddEvent").serialize(); 
    url = $("#formAddEvent").attr('action'); 
    $("#btn_add_event").attr('disabled', 'disabled'); 
    $("#addEventErrorMsg").html(''); 
    $.ajax({ 
     url: url, 
     type: "POST", 
     data: {postData:strSeriaze}, 
     beforeSend: function(){ 
      $('#loader-icon').show(); 
     }, 
     complete: function(){ 
      $('#loader-icon').hide(); 
     }, 
     success: function(data){ 
     //Control is not returning here on success from PHP file 
      $('#loader-icon').hide(); 

      if(data == "Success") 
      { 
       $("#myModal-add-event").modal('hide'); 
       $("#myModal-add-event").hide(); 
       window.location.href = site_url + "event_index.php"; 
       return false; 
      } 
      else 
      { 
       $("#btn_add_event").attr('disabled', false); 
       $("#addEventErrorMsg").show(); 
       $("#addEventErrorMsg").html(data); 
      } 
     }, 
     error: function(){} 
    }); 
    }) 

我試着調試通話是完全將PHP文件中的問題,書面那邊也在努力,但控制不被退回到邏輯js文件(即AJAX成功函數)。反過來,我無法執行成功函數內寫入的代碼。

請糾正我在我的代碼做了錯誤。

以下是執行後,預計返回控制js文件(即。AJAX成功funtion)所需的PHP代碼,但它沒有發生。

if($ret) { 
    $eventAddResultArr = $objEvent->GetResponse(); 

    if($eventAddResultArr['msg'] == 'Success') { 
    echo "Success"; 
    exit; 
    //From here it is expected to return the control to js file's AJAX success function but it's stopping execution here only 
    } else { 
    $errMsg = ""; 
    foreach($eventAddResultArr['msg'] as $key => $err_msg) { 
     $errMsg .= $err_msg."<br>"; 
    }  
    echo $errMsg; 
    exit; 
    } 
} 

注:我已經把意見在我的代碼來讓你明白我的問題更好。如果您需要關於我面臨的問題的更多信息,請讓我知道。

謝謝。

+0

嘗試添加一些代碼到/調試你的呃ror'處理程序 - 可能是響應未成功返回。 –

+0

你確定,$ ret值是真的嗎?! –

+0

@YazidErman:是的,這是真的。 「成功」一詞也會打印到控制檯中。 – user2839497

回答

3

如果您沒有在阿賈克斯使用數據類型比你可以遵循這樣的:

在PHP

使用echo true;,而不是echo "Success";

而在阿賈克斯,請與:

if(data == true) { 
//your code 
} 
+0

嗨,感謝兄弟,你的伎倆爲我工作。如果你不介意,請你幫我一個忙,並用DataType添加代碼。像json一樣。這對我的男人很有幫助。再次感謝。敏銳地等待你的回覆。 – user2839497

+0

you r歡迎,@ user2839497, – devpro

+0

@ user2839497確保您也正確地測試了您的錯誤路由 - 上面的代碼可能會將'data'中的錯誤字符串視爲布爾值'true'。'if(data === true)''可能是所有需要的,儘管將兩種不同類型返回給同一個處理程序看起來並不正確 - 如果您想出其他一些成功/失敗的表示方式會更好,例如' {success:true}'和'{success:false,message:'error message'}',然後測試if(data.success)並在錯誤處理路徑中使用'data.message'。 –

0

只要刪除出口;這將是問題,尤其是沒有必要。

+0

嘗試過你的訣竅,但結果相同。 – user2839497

+0

那麼,調試是必須的!嘗試用一個只回顯「成功」的文件來替換目標php文件;''並告訴我們會發生什麼 –

+1

請參閱devpro的答案。它爲我工作。 – user2839497