2015-05-25 3 views
0

В принципе, я хочу получить массив с t.php и предупредить его с помощью JavaScript с ответом t.php.

Проблема в том, что переменная не существует в этом файле ... Итак, как вы можете передать эту переменную в JS?

Я попытался с 'возвращением':

return $sqlData = $q->query_array_assoc(); 

Но не работаю.

Вот мой $ .ajax код:

<script type="text/javascript"> 
$(document).ready(function(){ 

$('#brand').change(function(e){ 
    console.log(e); 
    $.ajax({ 
     method: "GET", 
     url: "t.php", 
     data: { type: 1, brand: this.value } 
    }) 
    .done(function(msg){ 
     $('#debug').html(msg); 
     var pArray = <?php echo json_encode($sqlData);?> 
     for (var i = 0; i < pArray.length; i++) { 
      alert(pArray[i]); 
     }; 
}); 
}); 
</script> 

Примечание: Я послал

data: { type: 1, brand: this.value } 

Для проверки переключателя заявление в файле .php, но не проблема с этим. Я получаю данные из базы данных и выборки в переменной $sqlData;

Таким образом, массив содержит данные, проблема получить его с $.ajax

+3

не представляется возможным. HTTP ничего не знает о php-структурах, он только «байты». php-массив в таком куске байтов будет буквальным словом «Array». вам необходимо сериализовать/закодировать массив. для JS самым простым методом является 'json_encode()'. и обратите внимание, что ваш фрагмент php в JS-коде бессмыслен. что PHP выполняет ** ONCE ** при создании страницы и никогда больше. –

+0

Кроме того, вы должны использовать «echo» или «print» вместо «return» в «t.php» для возврата некоторого результата для вашего js =) – liding

+0

Итак, как ... Как вы можете сделать вложенный выбор с помощью запрос MySQL? У вас есть идея, как? – wwwanaya

ответ

1

в файле PHP, вам нужно повторить вместо возвращения

echo json_encode($q->query_array_assoc()); 

в JavaScript коде:

$.ajax({ 
     method: "GET", 
     url: "t.php", 
     data: { type: 1, brand: this.value }, 
     success: function(data) { 
      $('#debug').html(data); 
      // if you want to use it as array 
      var json_data = JSON.parse(data); 
     } 
    }); 
+0

Когда я это делаю, Chrome Debugger показывает ошибку в первой строке ... ... – wwwanaya

+0

Это потому, что у вас есть эта строка в html-заголовке, а не из-за ajax, t влияют на выход. – lightbringer

+0

Да, но это относится к первой строке, не имеет значения, если вы написали экземпляр , он всегда показывает эту ошибку. – wwwanaya

1

сделать 2 файлов пожалуйста, файл «t.php» и «т .html "и добавьте мой код. Запустите код и посмотрите ответ. Вам просто нужно работать с ответом, чтобы получить значения, запятые запятой "," !!!

/******************** ОБНОВЛЕНО ***********************/

//t.php

<?php 
 
$a = array(); 
 
$a[]=1; 
 
$a[]=2; 
 
$a[]=3; 
 
echo "$a[0],$a[1],$a[2]"; 
 
?>

//t.html

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
 
<script type="text/javascript"> 
 

 

 
function fun(){ 
 
    $.ajax({ 
 
     method: "GET", 
 
     url: "t.php", 
 
     data: { }, 
 
     dataType: "html", //expect html to be returned     
 
     success: function(response){      
 
\t \t //$("#debug").html(response); //Outputs the html of php file into #dialog div 
 
\t \t \t alert(response); 
 
\t  document.getElementById("debug").innerHTML = (response); //Outputs the html of php file into #dialog div 
 
\t \t } 
 
    }) 
 

 
} 
 
</script> 
 

 
<button onclick="fun()">Call Ajax Fun</button> 
 

 
<div id="debug"></div>

Помогла ли это?

+0

Да, это то, что я хочу сделать. Так должен быть .html-файл? – wwwanaya