2016-06-10 3 views
1

Ich habe Objekt in Javascript und ich muss dieses Objekt an PHP mit Ajax senden.senden Post Daten von js zu php mit Ajax ohne Typ Besetzung

Ich kann das Objekt „senden Sie einfach“, aber mein Problem ist, dass ich Typen Objektwert senden genau brauchen, wie sie und nicht alles als String sind: Bedeutung NULL als NULL, Boolesche Werte als boolean und so weiter ...

Der Versuch, dies:

var js_object= <?php echo json_encode(array("a"=>NULL, "b"=>TRUE, "C"=>1.1)); ?>; 

$.ajax({ 
    type: "POST", 
    url: "some.php",   
    dataType: "json", 
    data: JSON.stringify(js_object), 
    contentType: "application/json; charset=UTF-8", 
    success: function(msg){ 
    } 
}); 

aber sendet keine Daten an den Server überhaupt. und gibt auch keinen Fehler. wo liege ich falsch?

+0

Ihr Code funktioniert nur für mich in Ordnung. Ich habe es lokal auf einer Testseite eingerichtet. Natürlich steckte ich es in eine jquery '$ (document) .ready (function() {...}'. Öffnen Sie Ihre Chrome-Entwickler-Tools, suchen Sie nach Konsolenfehlern, überprüfen Sie Ihren Netzwerk-Tab. Ich sehe den Ajax-Anruf erfolgreich aufgerufen, mit den richtigen 'data'. – jszobody

+0

Wie können Sie sicher sein, dass es nicht gesendet wird? In Ihrem JSscript können Sie console.log (msg) und oben in Ihrem PHP-Skript var_dump ($ _ POST) um sicherzustellen, dass es wird dort – ksealey

+0

Im Versuch 'Erfolg: Funktion (msg) {console.log (msg); }' aber nichts vom Server. nicht Fehler in der Konsole. wenn Daten ohne 'dataType senden:" json ", contentType:" application/json; charset = UTF-8 ",' und 'stringify', dann funktioniert und sendet Daten an den Server, aber jeder Wert als String – RIKI

Antwort

1

Es ist nichts falsch mit Ihrem Code.
Ich habe fügen Sie einfach einen Ausschnitt mit post Abfrage httpbin.org:

$.ajax({ 
 
    type: 'POST', 
 
    url: '//httpbin.org/post', 
 
    data: JSON.stringify({name: 'test', 'null': null, 'true': true}), 
 
    success: onSuccess, 
 
    error: onError, 
 
    dataType: 'json', 
 
    contentType: 'application/json; charset=UTF-8' 
 
}); 
 
function onSuccess(data){ 
 
    // data is parsed json response 
 
    console.log('Request copy:', data.json); 
 
    console.log('Full response', data); 
 
} 
 
function onError(xhr) { 
 
    console.log(xhr.status, xhr.responseText); 
 
}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>


Server-Seite Beispielskript:

<?php 
    $json = file_get_contents('php://input'); 
    $data = json_decode($json, true); 
    header('Content-type: application/json'); 
    echo json_encode($data); 
+0

Vielen Dank, wenn ich versuche '$ .ajax ({ Typ:" POST ", URL:" some.php ", Daten: js_object, Erfolg: Funktion (msg) { } }); ' funktioniert, aber was ich in Frage gestellt, nicht. Ich habe wirklich nicht verstanden, was hier falsch ist. – RIKI

+0

Überprüfen Sie die Registerkarte "Netzwerk". Möglicherweise ist Ihr Server nicht geantwortet. Ich werde die Fehlerbehandlung hinzufügen. –

+0

Wenn Sie im Fehlerstatus den Statuscode "0" erhalten, überprüfen Sie die URL zum Skript. Kann sein, dass Sie relative statt absolute '/ some.php' verwenden. –