Ввод значений нескольких полей с использованием $ .ajax - PullRequest
1 голос
/ 10 мая 2011

В настоящее время я пытаюсь построить опрос, используя JQuery.

$('#next').click(function(){    

$.ajax({                       
    type:'POST',
    url: 'getNextPoll.php?pg=1',
    dataType: json,
    success: function() {
    $("#a .ui-btn-text").text(data.answera);
    $("#b .ui-btn-text").text(data.answerb);
    $("#c .ui-btn-text").text(data.answerc);
    $("#d .ui-btn-text").text(data.answerd);
        } // end of success callbac     
     });  
}); 

У меня четыре кнопки с id = a..d. То, что я пытался сделать, это ввести четыре значения ответа и поместить каждое из них в кнопку. По какой-то причине, хотя это позволяет мне получить только одно значение $ row [0] и больше ничего? Может кто-нибудь сказать мне, где я делаю не так?

Спасибо за ваше время.

РЕДАКТИРОВАТЬ : Вот php код

<?php 
     require_once('connection.php');
    require_once('constants.php');

    $pg = isset($_GET['pg']) ? $_GET['pg'] : 0;
    $nxtPage = $pg++;
    $offset = (1 * $pg) - 1;
    $result = mysql_query("SELECT * FROM Questions ORDER BY pk_Id DESC LIMIT 1" .  " OFFSET " . $offset) or die(mysql_error());

    $row = mysql_fetch_array($result, MYSQL_ASSOC); 

    echo json_encode($row); 

?>

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

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

$.ajax({
url: "link.php",                   
timeout: 30000,
data: 'user_id='+id,  //data in to php
dataType: 'json',     //data type being returned
error: function(XMLHttpRequest, textStatus, errorThrown)  {
    alert("An error has occurred making the request: " + errorThrown)
},
success: function(returndata){                                                      
    $('#row1').html(returndata.value1);
            $('#row2').html(returndata.value2);
}

});

Итак, чтобы получить правильные возвращаемые результаты способом, который вы используетевам нужно не только отправить правильные данные (json, XML и т. д.), но и сообщить jQuery, что они получают.Только тогда он узнает, как правильно проанализировать его в обратном вызове returndata.

Один из самых простых способов сделать это состоит в том, чтобы ваша страница ajax вызывала другую страницу, которая выполняет --php stuff-- и возвращаетмассив.Затем просто откройте json_encode ($ array) на этой странице и ничего больше.Пока вы объявляете свой тип данных как Json, вы будете иметь доступ к своим данным в функции успеха через returndata.datafieldname.Если в вашем массиве есть поле с именем id, и ваша функция успеха использует переменные данные для получения возвращаемых результатов, вы можете получить доступ к этим данным внутри функции успеха через data.id.

В вашем конкретном примере:похоже, вы пытаетесь установить значения с данными PHP, которые не возвращаются Ajax.Если это так, то почему бы просто не сделать $ .post?

1 голос
/ 10 мая 2011

Я думаю, что это будет работать (не проверено), согласно ответу bpeterson76:

Ваш php:

<?php 
require_once('connection.php'); 
require_once('constants.php'); 

$pg = isset($_GET['pg']) ? $_GET['pg'] : 0; 
$nxtPage = $pg++; $offset = (1 * $pg) - 1; 
$result = mysql_query("SELECT * FROM Questions ORDER BY pk_Id DESC LIMIT 1" . " OFFSET " . $offset) or die(mysql_error()); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 

echo json_encode($row); 
?>

Тогда ваш JS:

$('#next').click(function(){    

     $.ajax({                       
     type:'GET',
     url: 'getNextPoll.php?pg=1',
     dataType: json
     success: function(data) {
     $("#a .ui-btn-text").text(data.answera);
     $("#b .ui-btn-text").text(data.answerb);
     $("#c .ui-btn-text").text(data.answerc);
     $("#d .ui-btn-text").text(data.answerd);
    } // end of success callback

Все это при условии, что ваши соответствующие поля mysql называются answera, answerb, answererc и answerd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...