2012-02-23 2 views
1

У меня есть запрос AJAX, который отправляет информацию от на страницу с POST, и возвращает следующее:Что именно я могу вернуть из запроса jQuery AJAX?

 echo '<tr>'; 
     echo '<td>'; 
      echo $product1; 
     echo '</td>'; 

     echo '<td>'; 
      echo $code1; 
     echo '</td>'; 

     echo '<td>'; 
      echo $value1; 
     echo '</td>'; 

     echo '<td>'; 
      echo $time1; 
     echo '</td>'; 


    echo '</tr>'; 
// echo '</table>'; 

    echo 'Your code has been successfully redeemed!'; 

Это мой код на стороне клиента:

 }else{ 

     $('#poo tr:last').after(result); 

    } 

Мой вопрос. .. хотя это прекрасно работает, поскольку это добавлено к концу клиентской стороны таблицы, я также хотел бы передать другую переменную, которая будет использоваться в PHP, или, более конкретно, результат запроса базы данных, который можно использовать в PHP.

Невозможно понять, как выводить разные вещи, так как это испортит мое нынешнее расположение только эхом из HTML.

Любые идеи?

Спасибо! :)

+0

Почему бы просто не вернуть все переменные, которые вам нужны в формате JSON? – j08691

+0

Я думал, что это будет первый ответ, но я повсюду искал что-то, чтобы сказать мне, как это сделать (на самом деле в основном), и я не могу найти anytihng. – JamesG

ответ

3

Вы можете использовать структуру JSon:

echo json_encode(array("html" => $myhtml, "otherdata" => $myotherdata)); 

, а затем в доступе Jquery каждая часть.

$.ajax({ 
    url: "myhandler.php", 
    dataType: "json" 
}).done(function(json){ 
    $('#foo tr:last').after(json.html); 
    alert(json.otherdata); 
}); 

Заметим, однако, если $myotherdata ассоциативный массив (или объект, как мы называем его в JavaScript) предупреждение будет просто показать [object Object] (что не является ошибкой! Ссылаться на его свойства с точки синтаксису или синтаксису массива json.otherdata.key или json.otherdata["key"])

+0

Хорошо, что возвращает «неопределенный». Ive огляделся и кажется, что я должен использовать JSON.parse? Или есть причина, по которой он возвращается? – JamesG

+0

Хорошо, нет, это, его работа. Сквозь немного, и все в порядке. Благодаря! – JamesG

2

Вы можете вернуть все, что захотите, из своего запроса AJAX; вам просто нужно сообщить JQuery, как с ним обращаться.

Если вы используете $.getJSON для вызова запроса AJAX, вы можете кодировать структуру PHP, используя json_encode, и она появится в JS с аналогичной структурой.

1

Как отказ, я не пишу PHP код регулярно, но вам просто нужно изменить формат из структуры таблицы в формате JSON:

echo '{'; 
     echo 'Product1:'; 
      echo $product1; 


     echo ',Code1:'; 
      echo $code1; 


     echo ',Value1:'; 
      echo $value1; 


     echo ',Time1:'; 
      echo $time1; 



    echo '}'; 

А затем изменить свой клиентский скрипт, чтобы принять этот объект JSON и создайте структуру вашей таблицы на стороне клиента. Таким образом, вы также можете передавать другие переменные.

2

вы можете получить все данные в формате JSON и прочитать их. например, в PHP вы можете построить многомерный массив, состоящий из разных типов данных, которые вы хотите. рассмотрим ниже многомерный массив.

$array = array(
    'table' => array(
     $product1, 
     $code1, 
     $value1, 
     $time1, 
    ), 
    'anothervar' => array(
     'someValue', 
     'anotherVal', 
     'someMoreval', 
     'andValue', 
    ), 
    'somemorevar' => array(
     'data', 
     'someMoreData', 
     'anotherData' 
    ), 
); 

преобразовать это в JSON с помощью функции json_encode PHP.

$json = json_encode($array); 
echo $json; 

, а затем прочитать данные JSON с помощью javascript. и делайте все, что захотите.

надеюсь, что это поможет.

1

У меня была аналогичная проблема с обнаружением информации JSON. Это там, вы просто должны смотреть. Тем временем вы можете использовать функцию javascript .split() и создать некоторую смешную последовательность символов. Например.

<?php 

echo //EVERYTHING YOU WANT IN THE FIRST PART; 
echo '|#@!|'; 
echo //EVERYTHING YOU WANT IN THE SECOND PART; 

?> 

и на стороне JQuery

...function(result(){ 
    var resultArray = result.split('|#@!|'); 
    // YOU NOW HAVE BOTH PARTS. ONE IS IN resultArray[0], THE OTHER IN resultArray[1] 
}); 

Надеется, что это помогает.

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