2011-05-10 56 views
1

当前我试图使用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); 

?> 
+0

显示更多您的php代码 – Ibu 2011-05-10 19:27:21

+0

我没有看到代码尝试设置比#a更多的值。您是否发布了无法使用的完整代码?另请注意,您正在使用静态文本($ row [0])更新内容,而不是使用ajax调用返回的数据。 – roirodriguez 2011-05-10 19:29:33

+0

你在迭代吗?这可能是你的问题,因为我需要查看代码来正确找出问题。 – BRampersad 2011-05-10 19:31:28

回答

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,answerc和answerd。

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它获得了什么。只有到那时它才会知道如何在返回数据回调中正确解析它。

实现此目的最简单的方法之一是让您的ajax页面调用另一个页面,它会执行--php stuff--并返回一个数组。然后,只需在该页面上echo json_encode($ array),而不是其他任何东西。只要您将数据类型声明为Json,就可以通过returndata.datafieldname访问成功函数中的数据。如果数组中有一个名为id的字段,并且您的成功函数使用变量数据来获取返回结果,则可以通过data.id在成功函数内部访问该数据。

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

+0

对不起,如果有人看到它,刚刚意识到我偶然粘贴了一些代码。 – 2011-05-10 20:20:08

+0

我编辑了您的问题以包含该代码,并且我的答案基于该代码,因此让我知道这是否全部错误 – roirodriguez 2011-05-10 20:29:03

+0

忘记说输入@bpeterson。 – 2011-05-10 20:31:48