2017-05-08 3 views
-1

Ich finde ein seltsames Problem.AJAX Antwort, kann JSON String nicht ordnungsgemäß melden

Mit php ich eine Auswahl Abfrage auf MySQL-Datenbank ausführen, ich versuche, dies zu meinem Ajax Anruf, so dass ich für Schleife durch, aber ich immer undefined als eine Warnung, kann ich die gesamte JSON-Zeichenfolge jedoch können nicht Zielwerte.

Ajax-Code:

 $.ajax({ 
      type: "POST", 
      url: 'database_data.php', 
      data: { 
       action: 'ct', 
       input: input 
      }, 
      success: function (data) { 
       var obj = JSON.parse(data); 
       alert(obj[0].pid); 
       alert(data[0].pid); 
      },error: function(request, status, error){ 
       alert("Error: Could not delete"); 
      } 
     }); 

PHP-Code:

$base= mysqli_connect($dbhost, $dbuser, $dbpass, $dbbase); 
if ($_POST['action']== "ct"){ 
    $input = $_POST['input']; 
    $return_arr = array(); 
    $sql = "SELECT pid FROM programmes WHERE complete_title LIKE '%$input%' LIMIT 30"; 

if ($result = mysqli_query($base, $sql)){ 
    while ($row = mysqli_fetch_assoc($result)) { 
     $row_array['pid'] = $row['pid']; 
     array_push($return_arr,$row_array); 
    } 
} 

mysqli_close($base); 

echo json_encode($return_arr); 

}

Daten Alerting gibt eine Antwort, wie so:

[{"pid":"p00547jm"},{"pid":"p0054880"},{"pid":"p005492h"},... 

Wenn ich Daten zu alarmieren wählte [0], Daten [1] es druckt jedes individuelles Zeichen

+0

'$ Schnipsel ({ datatype: "json", url: url, Daten: Daten, Erfolg: Erfolg });' hinzufügen datatype, oder verwenden Sie die Kurzschrift: http://api.jquery.com/jquery.getjson/ – ippi

+0

Sie alarmieren 'data [0]', die nicht analysiert wird. – rishipuri

+0

'obj' ist ein Array, also müssen Sie dort den richtigen Index verwenden:' obj [0] .pid' – CBroe

Antwort

0

Sie können dataType verwenden, um Jquery zu sagen, was Sie erwarten vom Server . Siehe http://api.jquery.com/jquery.ajax/

In Ihrem Fall

$.ajax({ 
      type: "POST", 
      url: 'database_data.php', 
      dataType: 'json', 
      data: { 
       action: 'ct', 
       input: input 
      }, 
      success: function (data) { 
       var obj = data; // I should already be json! 
       alert(obj.pid); 
       alert(data.pid); 
      },error: function(request, status, error){ 
       alert("Error: Could not delete"); 
      } 
     }); 
0

Dies ist, weil Sie wahrscheinlich Zeichenfolge als Antwort erhalten. So ist Ihr data ein string.

Sie JSON.parse() verwenden kann es in JSON-Objekt zu analysieren und den Zugriff auf die Daten wie diese,

data = '[{"pid":"p00547jm"},{"pid":"p0054880"},{"pid":"p005492h"}]'; 
 

 
console.log(JSON.parse(data)[0].pid);

+0

Er hat bereits JSON.parse() gemacht.Weitere Informationen finden Sie im HTML-Code – bigbounty

+0

@bigbounty, den er immer noch braucht, um auf die richtigen Array-Elemente zuzugreifen. – CBroe