2015-02-02 2 views
-1

Я написал этот код, но он не работает. Я почти уверен, что это в основном правильно, но я не знаю, что с ним не так. Скрипт возвращает в качестве выходного сигнала "не определено"Прочтите объект JSON с Javascript (ошибка)

------ PHP на сервере ----------------- (http://www.autofficinacicco.it/json.php)

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 

$conn = new mysqli($nomehost, $nomeuser, $password, ""); 

$result = $conn->query("SELECT codice, immagine, testo FROM Promozioni"); 

$outp = array(); 
while($rs = $result->fetch_array(MYSQLI_ASSOC)) 
{ 
    $outp[]=$rs;  
} 


$conn->close(); 

echo json_encode($outp); 
?> 

- --- JAVA SCRIPT ----------------------------------------

<script> 
var xmlhttp = new XMLHttpRequest(); 
var url = "http://www.autofficinacicco.it/json.php"; 

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     myFunction(xmlhttp.responseText); 
    } 
} 
xmlhttp.open("GET", url, true); 
xmlhttp.send(); 

function myFunction(response) { 
    var arr = JSON.parse(response); 
    var i; 
    var out = "<table>"; 

    for(i = 0; i < arr.length; i++) { 
     out+=arr["immagine"]; 
     out+="</br>"; 
     out+=arr["codice"]; 
     out+="</br>"; 
     out+=arr["testo"]; 
     out+="</br>"; 
    } 
    out += "</table>" 
    document.getElementById("id").innerHTML =out; 
} 
</script> 
+1

использование json_encode(); – Robert

+0

Добавить текст ошибки из консоли браузера –

+2

«это не работает» не является явным заявлением о проблеме. Что происходит? Как это отличается от того, что вы ожидаете? Что вы сделали для его отладки? – Quentin

ответ

2

Ваш JSON не является надлежащим документом. Измените json formating и используйте json_encode(); Функция

$outp = "["; 
while($rs = $result->fetch_array(MYSQLI_ASSOC)) 
{ 
if ($outp != "[") {$outp .= ",";} 
$outp .= '{"Codice":"' . $rs["codice"] . '",'; 
$outp .= '"Testo":"' . $rs["testo"]  . '",'; 
$outp .= '"Immagine":"'. $rs["immagine"]  . '"}'; 
} 
$outp .="]"; 

$conn->close(); 

к

$outp = array(); 
while($rs = $result->fetch_array(MYSQLI_ASSOC)) 
{ 
    $outp[] = $rs; 
} 
$conn->close(); 
echo json_encode($outp); 
+0

Я имею в виду да, исходный вопрос уже смехотворный; но я хотел бы упомянуть, что это решение действительно является проблемой безопасности, поскольку вы помещаете каждое значение (поле) из таблицы в выходной (пользовательский). Глядя на вашу репутацию, @ Robert, я не сомневаюсь, что вы это знаете, и это всего лишь пример кода; но я думаю, что исходный плакат не будет ... –

+0

Ячейки ограничены в SQL-запросе «codice, immagine, testo», поэтому мне не пришлось писать отдельный массив. – Robert

Смежные вопросы