使用$ .ajax引入多个字段值

时间:2011-05-10 19:23:00

标签: php ajax jquery

目前我正在尝试使用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 个答案:

答案 0 :(得分:2)

这是我的应用程序的典型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访问success函数中的数据。

在您的具体示例中,您似乎正在尝试使用Ajax未返回的PHP数据设置值。如果是这样的话,为什么不做一个$ .post?

答案 1 :(得分:1)

根据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,answerserc和answerd。