2016-07-12 15 views
1

Fail-Szenario:

Ich binde ein Ereignis an einen AJAX Post Antrag stellen einen fest codierten Schlüssel-Wert-Paar an ein PHP-Skript zu senden, die eine Nachricht zurück zu sagen die Anfrage korrekt empfangen wurde.

Das Sendeereignis wird ausgelöst und die AJAX-Anforderung wird gesendet, schlägt jedoch fehl. Betrachtet man die Parameter in Firebug, sehen die Parameter genau so aus, wie sie sollten.

$(document).ready(function(event) { 

     $('form').submit(function(event) { 
      $.post("reqhandler.php", { "division": "division"}); 

     }) 
    }) 

Arbeits Szenario:

Ich kopiere die POST-Anforderung und geben Sie ihn in die Konsole gibt. Die Anforderung wird durchgeführt wie oben mit den gleichen Parametern, aber diesmal funktioniert es:

$.post("reqhandler.php", { "division": "division"}); 

Meine Vermutung:

Der einzige Unterschied zwischen den beiden Szenarien mir oben auftauchen ist der Content-Length in den Anforderungsheadern. Das fehlgeschlagene Szenario hat einen Inhaltslängenkopf von 23, und der Arbeitsinhalt hat eine Inhaltslänge von 17, was es sein sollte.

Warum funktioniert das fehlgeschlagene Szenario nicht? Ich bin mir nicht sicher, wie ich es beheben kann.

+0

vielleicht ur-Header für diese beiden Anfragen stellen ? Es könnte etwas mit dem Header-Wert zu tun haben. – MMhunter

+0

'return false;' in Ihrem Submit-Code. Woher weißt du, dass es scheitert, wenn du keine Erfolgsfunktion hast? – PHPglue

+0

Ich weiß, dass es fehlschlägt, weil ich den Status der Anfrage in Firebug sehen kann und weil ich keine Antwort erhalte, wenn ich die Anfrage in Firebug begutachte. –

Antwort

0

Angenommen, Sie haben ein Formular mit einer Submit-Button, verwenden Sie die folgende externe JavaScript:

$(function(){ //load start 

$('form').submit(function(){ // no need for EventObject here 
    $.post('reqhandler.php', {division: 'division'}, function(res){ 
    console.log(res); // use Firebug 
    // res could be result from PHP's echo json_encode($assocArray); 
    }, 'json'); 
    return false; 
}) 

}); // load end 

reqhandler.php könnte wie folgt aussehen:

<?php 
$res = array('someProp' => 'a value', 'prop2' => array('now', 'you', 'see', 365)); 
if(isset($_POST['division'])){ 
    echo json_encode($res); 
} 
?>