2017-01-21 5 views
0

Hallo könnte jemand erklären, warum Ajax immer die Länge von JSON zurückgibt?Ajax gibt immer die Länge von JSON

$(document).ready(function() { 
    $("#addElem").click(function (e) { 
     e.preventDefault(); 
     var val1 = $('#addname').val(); 
     var val2 = $ ('#addprice').val(); 
     $.ajax({ 
      type: 'POST', 
      url: 'server.php', 
      dataType:"json", 
      data: {name: val1, action:'set', price: val2}, 
      success: function(data){ 
       var ident = $('#text').append(data); 

      } 
     }).done(function(data) { 
      alert(data) 
     }); 

    }); 
}); 

EDITED: hier ist ein server.php https://jsfiddle.net/nvy2cavz/

GELÖST Es war nicht mein Fehler .Es ein Server.php Deal war. Die SERVER.php funktionieren immer nur so. DANKE ALLES

+4

Diese Frage ist nicht sehr klar ... meinen Sie, dass die Daten, die in Ihrem $ .ajax-Erfolgsrückruf zurückgegeben werden, nur die Länge der JSON-Zeichenfolge enthalten? In diesem Fall müsste der Code in der server.php überprüft werden. – John

+0

Geben Sie den Code des PHP-Skripts ein, das den Rückruf behandelt. –

+1

Drücken Sie in Ihrem Browser F12, um die Entwicklertools zu öffnen. Es sollte einen Bereich "Netzwerk" (oder einen ähnlichen Bereich) geben, in dem Sie die genauen gesendeten Daten einsehen können. Ich bin fast mehr, wenn AJAX etwas erhält, weil es das ist, was überhaupt gesendet wird. –

Antwort

2

Ihr PHP-Code gibt die Länge von items Array zurück. Das ist es, was Sie in Daten bekommen. Es ist nicht die Länge von JSON, sondern die Länge (Anzahl), die von Ihrem serverseitigen Code zurückgegeben wird.

// rest of the code 
if($_POST['action'] == 'set') { 
    if(isset($_POST['name']) && isset($_POST['price'])){ 
     $item = [ 
      'name' => $_POST['name'], 
      'price' => $_POST['price'] 
     ]; 
     $items[] = $item; 
     file_put_contents('items.json', json_encode($items)); 
     $return = json_encode(count($items)-1); //<<<<<<<<<<<<< Change here if you want 
    } else { 
     $return = json_encode(['error' => 'Wrong item details']); 
    } 
} 
// rest of the code 
2

$.append Funktion empfängt (htmlString or Element or Text or Array or jQuery). Wie können Sie json Objekt $.append verwenden? Ihr data Objekt in success Funktion ist JavaScript-Objekt. Ich denke das Problem ist hier versteckt.

Verwandte Themen