2017-03-24 3 views
0

Mein Code gibt dataType-Objekt in PHP, aber wenn ich die gleiche Funktion mit AJAX aufrufen, gibt es den Datentyp als String mir zurück. Ich möchte, dass der Datentyp ein JSON-Objekt ist.Ajax Post Rückgabe String anstelle von JSON-Objekt

PHP-Code:

$result = $manualRequest->getUser($_POST['phonenumber']); 

print_r($result); 

Dies ist tatsächlich eine analysiert Datenbankobjekt

AJAX Code:

function getCustomer() { 
     var callerNumber = $('#caller_number').val(); 
     var data = { 
      'phonenumber': callerNumber 
     }; 
     var url = "customerRequest.php"; 

    $.ajax({ 
     url: url, 
     data: data, 
     type: 'POST', 
     dataType: 'JSON', 
     success: function (result) { 
      console.log(result); 
     } 
    }); 
} 

ich das gewünschte Ergebnis zu erzielen, aber ich die JSON wollen Objekt und nicht die Zeichenfolge.

+0

'$ manualRequest-> getUser ($ _ POST [ 'Telefonnummer']); 'was gibt es zurück –

+0

' print (json_encode ($ result)) ' –

Antwort

1

print_r der Regel nicht zurückgeben gültig JSON, möchten Sie

$result = $manualRequest->getUser($_POST['phonenumber']); 
echo json_encode($result); 

So lange tun, wie es gültig JSON ist, und die dataType wird auf json, wird jQuery Parsen es als solches, etwas anderes sollte zu einem "Parse-Fehler" in Ihrer Ajax-Anfrage führen.

+0

sorry Es funktioniert nicht –

0

In PHP-Datei hinzufügen:

header('Content-type:application/json;charset=utf-8'); 
echo json_encode($result); 

statt print_r($result);

+0

Entschuldigung Es funktioniert nicht –

+0

in Ihrer Javascript-Datei, ändern Sie die Zeile console.log (Ergebnis) zu console.log (JSON.parse (Ergebnis)); –

+0

Dies gibt mir den folgenden Fehler Uncaught SyntaxError: Unerwartete Token P in JSON an Position 0 bei JSON.parse () bei Object.success (startrequest.php: 2012) um Function.handleSuccess (jquery-ui.min.js: 142) –

0

In Javascript Sie JSON.parse Methode verwenden, können Sie Ihre Zeichenfolge JSON JSON-Objekt zu analysieren.

Die Dokumentation dieser Methode: https://www.w3schools.com/js/js_json_parse.asp

+0

Ich gebe tatsächlich eine PARSE (ein MBASS) -Objekt von PHP und wenn ich versuche, was Sie gesagt habe ich bin den folgenden Fehler erhalten Uncaught SyntaxError: Unerwartetes Token P in JSON an Position 0 bei JSON.parse () bei Object.success (startrequest.php: 2012) bei Function.handleSuccess (jquery-ui.min.js: 142) –

+0

Oh, ok ich sehe. Es scheint, dass Ihr PHP die Antwort nicht an das JSON-Format sendet. Ich denke, dass Sie die Lösung von Željko Krnjić verwenden können. Sie müssen Ihren Antwortheader mit dem richtigen Format festlegen: header ('Content-type: application/json; charset = utf-8'); und verwenden Sie die Methode json.encode, um mit einem formatierten JSON-Objekt zu antworten. –

0

Wenn Sie ziemlich JSON wollen

$result = $manualRequest->getUser($_POST['phonenumber']); 
echo json_encode($result , JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT); 

bearbeiten

$.ajax({ 
    url: url, 
    type: 'POST', 
    dataType: 'json', 
    data: data, 
    success:function(response){ 
     console.log(response); 
    } 
}) 
.done(function() { 
    console.log("success"); 
}) 
.fail(function() { 
    console.log("error"); 
}) 
.always(function() { 
    console.log("complete"); 
}); 
+0

Entschuldigung Es funktioniert nicht –

Verwandte Themen