2012-03-24 10 views
0

Wenn ich über Ajax poste, bekomme ich manchmal zusätzliche Zeichen geschrieben zum Beispiel. Wenn der Text obwohl Ajax geben yo _POST ein php $ ich am Ende immer:jQuery posts Fehlertext beim Posten mit Ajax

Das ist mein messagejQuery127638276487364873268_374632874687326487

99% der Zeit Beiträge jedoch in Ordnung passieren ... Ich bin nicht sicher, wie man erfassen und entfernen Sie diesen Fehler, da dies nur gelegentlich der Fall ist.

// this is the ajax that we need to post the footprint to the wall. 
$('#submitbutton').click(function() { 
    var footPrint = $('#footPrint').val(); 
      var goUserId = '1'; 
    $.ajax({ 
     type: 'POST', 
     url: '/scripts/ajax-ProfileObjects.php', 
     data: 'do=leave_footprint&footPrint=' + footPrint + '&ref=' + goUserId + '&json=1', 
     dataType: 'json', 
     success: function(data){ 

      var textError = data.error; 
      var textAction = data.action; 
      var textList = data.list; 

      if (textError == 'post_twice' || textError =='footprint_empty' || textError == 'login_req') { 
      // display the error. 

      } else { 
      // lets fade out the item and update the page. 

      } 

    }); 

return false; }); 
+2

Sie müssen Ihren Code oder ein Beispiel veröffentlichen, um eine Antwort zu erhalten. – j08691

Antwort

0

Ich fand durch einen Eliminierungsprozess heraus, dass der Fehler durch ungültige Daten verursacht wurde, die an die Abfragezeichenfolge übergeben wurden.

Die Linie:

data: 'do=leave_footprint&footPrint=' + footPrint + '&ref=' + goUserId + '&json=1', 

bemerkte ich, dass die footprint Variable immer das Skript, wenn brechen würde '??' war vergangen. Eine Anzahl von Mitgliedern, die eine Frage stellen, verwenden ein '??' wann und nicht ein einziges "?"

Durch das Umschließen der FootPrint-Variable in encodeURIComponent() kann ich den gesamten Text an das PHP-Skript senden, ohne die URL-Zeichenfolge zu unterbrechen.

New Line:

data: 'do=leave_footprint&footPrint=' + encodeURIComponent(footPrint) + '&ref=' + goUserId + '&json=1', 

Diese Lösung für mich gearbeitet hat ... Fragen Kommentare und Anregungen immer noch willkommen.

0

Versuchen Sie, Cache auf false zu setzen. Von http://api.jquery.com/jQuery.ajax/

Cache Boolean Standard: true, false für datatype ‚script‘ und ‚JSONP‘ Wenn auf false gesetzt ist, wird es Seiten zwingen angefordert nicht vom Browser zwischengespeichert werden. Wenn Cache auf "false" gesetzt wird, hängt auch ein Abfragezeichenfolgenparameter "_ = [TIMESTAMP]" an die URL an.

+0

Danke, ich habe meinen Code aktualisiert und werde sehen, ob irgendwelche Beiträge angezeigt werden. Wenn es sich um ein Cache-Problem handelt, sollte ich die PHP-Datei auch nicht auf Cache setzen? – Philip

+0

@Philip Ich denke, Sie müssen keine PHP Header() Personal setzen. _ = [TIMESTAMP] param wird für diesen Zweck verwendet – dotoree

Verwandte Themen