2013-04-14 2 views
0

Мне сложно переносить массивы со страницы PHP на JavaScript с использованием запроса AJAX.Передача нескольких массивов PHP на JavaScript по успеху AJAX

Мне нужно будет передать информацию из нескольких php-массивов в javascript. Я знаю, что я могу использовать json_encode для этого, однако мне сложно выполнять это. Массив $name, похоже, не проходит, кроме того, мне понадобятся все массивы, которые будут переданы javascript, а не только $name.

Я ценю любые предложения с этим.

Большое спасибо заранее!

Это то, что я попытался прохождения $name массив (фрагменты кода):

PHP

while($row2 = mysqli_fetch_array($results2)){ 
    $name[$i] = $row2['prod_name']; 
    $price[$i] = $row2['price']; 
    $upc[$i] = $row2['upc']; 
    $quantity[$i] = $row2['quantity']; 
} 
echo json_encode($name); 

AJAX

$.ajax({ 
    url: "invoice-get-data.php?hotItems=1&getArrays=1", 
    dataType: "json", 
    success: function(data){ 
     alert(data[0]); 
    } 
}); 
+0

Что дает 'alert (data)' дает? 'Undefined'? –

+0

вы предупреждаете 'имя [0]', но вы назначаете успешное возвращение информации в 'data' ... – Jon

+0

@ArtyomNeustroev, Спасибо за ответ. Ничто не получает предупреждения и сообщений об ошибках ... – AnchovyLegend

ответ

0

$ я, кажется, не изменяется в то время так что последнее значение постоянно перезаписывается новым значением. Вы можете использовать:

$name = array(); //setup array 
while($row2 = mysqli_fetch_array($results2)){ 
    $name[] = $row2['prod_name']; //add to the end of the array 
} 
echo json_encode($name); 

вы также можете использовать «умереть», чтобы повторить свой HTML код, чтобы быть уверенным, ничего другого запускается на выполнение после die(json_encode($name));

и ваш JQuery возвращает переменную data так используйте data:

$.ajax({ 
    url: "invoice-get-data.php?hotItems=1&getArrays=1", 
    dataType: "json", 
    success: function(data){ 
     alert(data[0]); 
    } 
}); 
+0

Спасибо за ответ. Нет, $ i не является постоянным, это всего лишь фрагменты кода. – AnchovyLegend

+0

Или просто добавьте $ row2 в целом вместо всех элементов в отдельных массивах. –

+3

@AnchovyLegend со всем уважением, если вы суммируете, как минимум суммируйте с рабочим образцом. Ваш опубликованный код содержит как минимум 2 ошибки, не связанные с вашим вопросом и, по-видимому, связанные с вашим «сниппинг». –

2

Back-конец:

while($row2 = mysqli_fetch_array($results2)){ 
    $name[] = $row2['prod_name']; 
    $price[] = $row2['price']; 
    $upc[] = $row2['upc']; 
    $quantity[] = $row2['quantity']; 
} 
echo json_encode(array($name, $price, $upc, $quantity)); 

Внешняя ссылка:

$.ajax({ 
    url: "invoice-get-data.php?hotItems=1&getArrays=1", 
    dataType: "json", 
    success: function(data){ 
     data = JSON.parse(data); 
     alert(data[0]); 
    } 
}); 
+0

Спасибо за ответ. Однако ничто не получает предупреждения, и сообщений об ошибках тоже нет. – AnchovyLegend

+0

@AnchovyLegend это потому, что вы снова назначаете возврат к «данным» на успех, но пытаетесь оповестить «имя», которое не назначено. – Jon

+0

@Jon, описанная проблема после изменения 'name' на' data'. – AnchovyLegend

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