2017-03-10 3 views
0

Ich habe ein Formular zum Einfügen von Benutzer. Ich verwende POST-Methode und gespeicherte Prozedur. Die ReturnStatus und ReturnMessage werden automatisch basierend auf den eingegebenen Daten aufgerufen.Ajax: Nullwert zurückgeben

Ich habe einen Fehler festgestellt, da der AJAX-Wert null zurückgibt, bevor die Daten eingefügt werden. Aber wenn das Formular ausgefüllt ist und seine Arbeit völlig in Ordnung ist und es geschafft hat, das Ergebnis der erfolgreichen Operation anzuzeigen.

Dies ist mein Code:

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); 

?> 

Skript

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

Bitte helfen Sie mir. Danke :)

+0

Frage nicht klar .......... können Sie es mit einer besseren explainination bearbeiten – Naincy

+0

was die Ausgabe von 'json_encode ist ($ ReturnMessage) '? – hassan

+0

Aktualisiert meine Frage @ Naincy –

Antwort

1

überprüfen, ob Ihr $ReturnMessage Objekt ist UTF-8 codiert, da json_encode nur UTF-8 kodierten Daten verarbeitet. Sie können die Codierung mit http://php.net/manual/de/function.mb-detect-encoding.php testen und verändern mit http://php.net/manual/de/function.utf8-encode.php

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

Alle String-Daten müssen UTF-8 codiert.

Fügen Sie diese Zeile direkt vor Ihren json_encode Linie:

$ReturnMessage = utf8_encode ($ReturnMessage); 
+0

Die '$ ReturnMessage' gibt 'ASCII' zurück, wenn ich die Codierung teste. Ich bin irgendwie verwirrt, wie man sie ändert. Könnten Sie mir vielleicht zeigen, wie? @Paladin –

+0

@Mint: Ich habe meinen Beitrag bearbeitet, siehe letzten zwei Zeilen;) – Paladin

+0

Danke :) .Die Null ist weg und wird durch "" "ersetzt. Ich habe dann die Position des 'json_encode' in' if (isset ($ _ POST ['submit'])) 'geändert und sie funktionieren nun einwandfrei. –

1

Sie Überprüfung auf Anfrage Typ POST:

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

während Ajax eine GET Anfrage senden, lesen Sie mehr darüber, wie Ajax und jQuery POST verwenden.

<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

Der Wert 'null' ist immer noch da. @HassanAhmed. Die Dokumentation ist verwirrend, aber ich werde mich darum kümmern. Danke :) –

+0

ändern Sie diese Zeile '" Fehler: ". odbc_errormsg(); 'zu' echo "sein Fehler:". odbc_errormsg(); '; und prüfen Sie, ob es irgendwelche Fehler gibt, und fügen Sie dies zum Ajax-Erfolg-Callback 'alert (response);' hinzu und überprüfen Sie Ihre Konsole. – hassan

+0

Es gibt keinen Fehler. Die '$ ReturnMessage 'wird angezeigt und ersetzt den Nullwert beim Übergeben. Aber ich kann das "Null" am Anfang immer noch nicht loswerden, wenn die Daten noch nicht übermittelt wurden. @HassanAhmed –