2017-03-10 200 views
0

我有一個表單來插入用戶。我使用POST方法和存儲過程。將根據插入的數據自動調用ReturnStatusReturnMessageAjax:返回空值

我在插入數據之前遇到了一些錯誤,因爲ajax返回值爲null。但是當表格填寫完整並提交工作時,並且設法顯示成功操作的結果。

這是我的代碼:

PHP

if(isset($_POST['submit'])) 
{ 

    $UserNm=$_POST["UserNm"]; 
    $UserId=$_POST["UserId"]; 
    $UserPwd=$_POST["UserPwd"]; 

    $stmt = odbc_exec(
     $conn, 
     "CALL UserInsert (
      '$UserNm', 
      '$UserId', 
      '$UserPwd',)" 
     ); 

    if (!$stmt) { 
     "Error : " . odbc_errormsg(); 
    } 

    if ($stmt) { 
     if (odbc_fetch_row($stmt)) { 
      $ReturnStatus=odbc_result($stmt,'ReturnStatus'); 
      $ReturnMessage=odbc_result($stmt,'ReturnMessage'); 
     } 

     if(isset($ReturnStatus) && $ReturnStatus==1) { 
      $ReturnMessage=odbc_result($stmt,'ReturnMessage'); 
     } 
    } 
} 

echo json_encode($ReturnMessage); 

?> 

腳本

<script> 
    $.ajax({ 
     url: "insert_sp.php", 
     dataType: "json", 
     success: function(data){ 
     alert(data.test); 
     } 
    }); 
</script> 

請幫助我。謝謝:)

+0

問題不清楚..........你可以用更好的explainination – Naincy

+0

編輯什麼json_encode的'輸出($ ReturnMessage)'? – hassan

+0

更新我的問題@ Naincy –

回答

1

檢查,如果你的$ReturnMessage對象是UTF-8編碼,因爲json_encode只處理UTF-8編碼的數據。 您可以http://php.net/manual/de/function.mb-detect-encoding.php測試編碼,並與http://php.net/manual/de/function.utf8-encode.php

@see改變:http://php.net/manual/en/function.json-encode.php

所有字符串數據必須是UTF-8編碼。

json_encode行前添加此行:

$ReturnMessage = utf8_encode ($ReturnMessage); 
+0

當我測試編碼時,'$ ReturnMessage'返回'ASCII'。我對如何改變它們感到困惑。你能告訴我如何? @Paladin –

+0

@Mint:我編輯了我的帖子,看最後兩行;) – Paladin

+0

謝謝:)。null消失了,被替換成''「'。然後,我改變了'if(isset($ _ POST ['submit']))'內的'json_encode'的位置,現在它們工作得很好。 –

1

你檢查POST請求類型:

if(isset($_POST['submit'])) 

,而你的Ajax發送GET要求,瞭解更多關於如何POST使用AJAX和jQuery。

<script> 
    $.ajax({ 
     url: "insert_sp.php", 
     method: "POST", 
     data: {submit: 'true'}, 
     success: function(response) { 
     // while you are expecting a json response 
     // so you will need to decode it . 
     var data = JSON && JSON.parse(response) || $.parseJSON(response); 
     alert(data); 
     } 
    }); 
</script> 
+0

'null'值仍然存在。 @哈桑艾哈邁德。文檔很混亂,但我會研究它。謝謝:) –

+0

更改此行'「錯誤:」。 odbc_errormsg();'爲'echo「錯誤:」。 odbc_errormsg();';並檢查是否有任何錯誤,並將此添加到ajax成功回調'alert(response);'並檢查您的控制檯。 – hassan

+0

沒有錯誤。提交時會顯示'$ ReturnMessage'替代null。但是當數據尚未提交時,我仍然無法在開始時清除「null」。 @HassanAhmed –