2013-03-27 3 views
0

Может ли кто-нибудь помочь мне в том, как передать массив значений из PHP и получить его с помощью AJAX. То, что я нашел, - это передать только одно значение из PHP. Когда я пытаюсь передавая значение массива я не знаю, как получить его на стороне AJAXПередача массива с PHP на javascript с помощью PHP

Это мой PHP код:

$success[]; 
$timeout[]; 
$fail[]; 

while($row1 = mysql_fetch_array($masterresult)) 
{ 
    $success[]=$row1[1]; 
    $timeout[]=$row1[2]; 
    $fail[]=$row1[3]; 
} 

echo json_encode(array("a"=>$success,"b"=>$timeout,"c"=>$fail)); 

И ниже по AJAX вызова:

var channel; 
function overall(){ 
    $(".one").show(); 
    $(".two").hide(); 
    $(".three").hide(); 
    $(".four").hide(); 
    window['channel']="overall"; 
    $.ajax({ 
      type:"GET", 
      url:"dash2.php", 
      data:{channel:channel}, 
      dataType:'json', 
      success:function(data){ 
        console.log(data.a); 
        console.log(data.b); 
        console.log(data.c); 
        } 
      }); 
    } 

Как передать эти значения массива php на этот вызов ajax? мог бы кто-нибудь помочь мне с кодом

+0

Когда вы хотите передать массив в javascript? Во время создания страницы с использованием PHP (в этом случае нет необходимости в AJAX) или после того, как страница была отображена пользователю (в этом случае вы должны использовать AJAX?) – Marshall

+0

этот вопрос (или очень много как это) были заданы так много раз здесь, на SO, это уже не смешно. Вы пытались найти ответ на сайт? Вы пытались прочитать «Связанные» вопросы, которые возникли, когда вы ввели свой вопрос? – Spudley

+0

может помочь мне с опубликованным кодом? –

ответ

2

Что вы хотите сделать, это encode it as JSON.

$yourArray = array('asdf', 'qwer', 'zxcv'); 
echo 'var yourJavaScriptArray = ' . json_encode($yourArray) . ';'; 

Это делает все ваши данные безопасными для использования в JavaScript.

Если вы делаете это только с помощью AJAX, вам не нужна часть var. Просто введите json_encode() напрямую.

+0

Я предпочитаю json_decode ... У вас более легкий путь, чем Mr Encode ... –

+0

вы можете проверить код, который я разместил, чтобы предложить мне, что все делать в вызове ajax? –

+0

@jibindcruz, Что случилось с тем, что у вас есть? Вам придется немного отладить это. Является ли ваша проблема клиентской или серверной? Посмотрите на результат своего сценария и выполните базовую отладку. – Brad

2

ли одно значение или несколько значений в массиве, например, вы всегда должны использовать:

json_encode($your_php_var) 
+0

OT, почему вы [отклонили это изменение] (http://stackoverflow.com/review/spected-edits/1791862)? Код в ответе имел опечатки, которые редактор пытался исправить. –

+0

@MooingDuck Потому что он изменяет ваш ответ. Это может быть улучшением, но если ОП найдет лучшее решение, основанное на вашем ответе, он должен опубликовать это в вопросе, а не в вашем ответе. – jeroen

+0

Я просто хотел выразить свое несогласие с этим решением. Очевидным опечаткам в коде должно быть разрешено фиксировать IMO, и если вы не уверены, есть кнопка пропуска. –

0
  1. json_encode ваш массив на PHP конце.
  2. Используйте этот объект JSON в JavaScript без каких-либо дополнительных усилий, его часть JavaScript.
  3. Когда вы отправляете его обратно на PHP только json_decode его в PHP.

Ссылка: PHP Manual

0

Вы можете использовать JSON в сочетании с JQuery для этого.

<?php 

    $myArray = array('a', 'b'); 
    echo json_encode($myArray); 

?> 

Ajax

$.get('http://localhost/index.php', 
    function(data) { 
     var response = jQuery.parseJSON(data); 
     console.log(response); 
    } 
); 

В коде:

var channel; 
function overall(){ 
    $(".one").show(); 
    $(".two").hide(); 
    $(".three").hide(); 
    $(".four").hide(); 
    window['channel']="overall"; 
    $.ajax({ 
      type:"GET", 
      url:"dash2.php", 
      data:{channel:channel}, 
      dataType:'json', 
      success:function(data){ 
        console.log(data["a"]); 
        console.log(data["b"]); 
        console.log(data["c"]); 
      } 
    }); 
} 
+0

см. Но я хочу эти значения отдельно –

+0

нравится, если успех содержит 54,67,32. Я могу получить доступ к этому, используя индекс в php, но как только я передам его в ajax, как бы получить эти значения? –

+0

Использование индексов, например. 'Данные [ "а"]'. – Mati

0

Надежда этот пример поможет вам. Представьте себе, если у вас есть некоторые входные данные в форме html и вам необходимо отправить их AJAX, сделайте с ними что-нибудь с сервера и получите результат на стороне клиента и сделайте с ним что-нибудь.

<form id="my_form" method="post" action="<?=$ServerSideUrl?>"> 
    <input type="text" name="field_1" value=""> 
    <input type="text" name="field_2" value=""> 
    <input type="text" name="field_3" value=""> 
</form> 

Вот вы AJAX скрипт, я использовал в этом примере JQuery

$('#my_form').ajaxSubmit({ 
     dataType: 'html', 
     error: function() { 
      alert('some error text'); 
     }, 
     complete: function(data) { 
      //data this is the result object which returned from server side 
      //for example you shpold alert the sum of thouse 3 field 
      alert(data.sum); 
     } 
}); 

Вот ваш серверный код

<? 
    $data = array(); 
    $data["sum"] = $_POST["field_1"] + $_POST["field_2"] + $_POST["field_3"]; 
    echo my_json_encode($data); 
    return true; 
?> 

Так что, когда ваш AJAX будет завершена она предупредит сумму из трех полей в вашей форме,

+0

Можете ли вы мне помочь с опубликованным кодом –

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