2017-05-21 1 views
0

Ich versuche, Array von SQL-Server mit PHP, und Parsing diese Array zu Javascript mit Ajax. Allerdings habe ich viele Lösungen von Google versucht, ich kann das Array nicht bekommen.übergeben PHP-Array zu JavaScript mit Ajax

Das ist mein PHP-Code ist:

<?php 
    include 'Connect.php'; 
    $Store_int = $_GET['num']; 

    $sql = "SELECT * FROM `store` WHERE `Place_int` = " . $Store_int; 

    mysqli_select_db($link, "web"); 
    $link->set_charset("utf8"); 
    $result = mysqli_query($link, $sql); 

    $arr = array(); 
    while ($row = mysqli_fetch_object($result)) { 
     $p = (string)$row->Name; 
     $arr[] = $p; 
    } 
    //print_r($arr); 
    $jsonArr = json_encode($arr, JSON_UNESCAPED_UNICODE); 
    echo $jsonArr; 
    mysqli_free_result($result); 
    mysqli_close($link); 
?> 

Array in PHP kodieren und Anzeige:

["pen","pencil","apple","cat","dog"] 

und die JS-Datei

function getArr(store_int) { 
    var jsArray = new Array(); 
    $.ajax({ 
     url: "fromSQL_store.php", 
     data: { 
      num: $("#store_int").val() 
     }, 
     type: "GET", 
     dataType: "json", 
     success: function (data) { 
      alert(num); 
      jsArray = JSON.parse(data.jsonArr); 
     }, error: function (data) { 
      alert("123"); 
     } 
    }); 
    //alert(jsArray.length); 
    return jsArray; 
} 

In Js, ich will bekomme immer eine leere Antwort (undefiniert) von PHP. Weil der Ajax die "Fehler" -Funktion beantwortet ... und der Fehlerstatus ist 200.

+0

Ihr Code auf SQL-Injektionen anfällig ist. Bitte lernen Sie [vorbereitete Aussagen] (https://www.youtube.com/watch?v=nLinqtCfhKY). –

+0

Wie für Ihre Frage, müssen Sie auch JSON 'Content-Type' Header in PHP setzen –

+0

@ tereško danke, ich werde die SQL-Injektionen verhindern, nachdem das Problem zu lösen. –

Antwort

1

Ihr Array wird immer undfined zurück, wie die AJAX Anruf async ist, Ihre Funktion gibt jsArray, bevor sie eingestellt ist. und Sie brauchen nicht JSON.parse(), wie Sie dataType als json in Ihrem Ajax Anruf definiert haben. Übergeben Sie eine Funktion an Ihre getArr() Funktion und verwenden Sie Ihre Daten in dieser Funktion.

function getArr(store_int, outputFn){ // what do you use store_int for? 
    $.ajax({ 
     url: "fromSQL_store.php", 
     data: { 
      num: $("#store_int").val() 
     }, 
     type: "GET", 
     dataType: "json", 
     success: function(data) { 
      outputFn(data) 
     },error: function(data){ 
      alert("123"); 
     } 
    }); 
} 

es dann wie Ausgang

getArr('5', function (data) { 
     console.log(data) 
}) 

Console

enter image description here

+0

Hallo, ich versuche es, und Fehler erneut. Und ich ändere viel Code auf andere Weise –

+0

welche Art von Fehler? – julekgwa

+0

Unerwartetes Token an Position 0 –

0

Ihr Problem liegt hier. Sie versuchen, auf data.jsonArr zuzugreifen, das immer undefiniert ist. Die gesendeten JSON-Daten werden tatsächlich durch die Variable data verkörpert.

HINWEIS: Möglicherweise müssen Sie auch angeben, dass der ausgegebene MIME-Medientyp JSON ist. Wenn Sie dies an die Spitze Ihres PHP-Skripts stellen, sollte das Ihr Problem lösen.

<?php 
header('Content-Type: application/json'); 
+0

Hallo, ich beende es, und das Ergebnis ist das gleiche. Und einige meiner Datenbankdaten werden verstümmelt sein. –

+0

Ihre Kommentare wurden notiert, danke @ tereško – EyuelDK

+0

Danke, ich löse die entstellte durch Hinzufügen charset = utf-8 –

Verwandte Themen