2011-05-10 57 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