2014-01-10 45 views
0

我有以下的jquery語句:單jQuery來更新多個元素

$("#add").click(
    function(event){ 
    var groupName = $("#groupName option:selected").text(); 
    var studentsToAdd = $('select#mainList').val(); 
    var mode = "exempt"; 
     $.post( 
     "addToList.php", 
     { studentsToAdd: studentsToAdd, mode: mode }, 
     function(data) { 
     $('#groupList').html(data[exemptList]); 
     $('#mainList').html(data[nonexemptList]); 
     } 
    ); 
    }); 

用下面的PHP代碼:

$studentsToAdd = $_REQUEST['studentsToAdd']; 
$arrayLength = count($studentsToAdd); 
$exemptList = ""; 
$nonexemptList = ""; 
for ($i=0;$i<$arrayLength;$i++){ 
    $result = mysql_query("UPDATE students SET exempt=1 WHERE id = '$studentsToAdd[$i]'"); 
    } 
$result = mysql_query("SELECT * from students WHERE exempt = 1"); 
while($row = mysql_fetch_array($result)) 
{ 
    $exemptList = $exemptList . "<option value=\"" . $row['id'] . "\">" . $row['last'] . ", " . $row['first'] . "</option>"; 
} 
$result = mysql_query("SELECT * from students WHERE exempt = 0"); 
while($row = mysql_fetch_array($result)) 
{ 
    $nonexemptList = $nonexemptList . "<option value=\"" . $row['id'] . "\">" . $row['last'] . ", " . $row['first'] . "</option>"; 
} 
$data = array(
    'exemptList' => $exemptList, 
    'nonexemptList' => $nonexemptList 
    ); 
echo json_encode($data); 

我試圖同時更新mainList和exemptList選擇與單一元素jQuery .post。它不工作。思考?

+0

在你的javascript中,'exemptList'和'nonexemptList'是未定義的。你可能意味着那些是字符串。你也應該在php中設置正確的contentType。 –

回答

0

如果你的php代碼是在另一個頁面或者你沒有提到的函數中,那麼return $data而不是return json_encode($data)應該可以工作,並將它作爲一個數組來使用。否則,你得到一個JSON字符串後面,從json_encode(),您需要解析爲一個JavaScript對象,所以嘗試:

var decoded = $.parseJSON(data); 
$('#groupList').html(decoded.exemptList); 
$('#mainList').html(decoded.nonexemptList); 

至少從我可以乍看之下和11日下午告訴。

編輯:您可以隨時使用Firefox Firebug插件嘗試console.log(data),並查看您從服務器獲得的內容,然後查看您是否需要解碼所獲取內容,更改編寫數組或引號的方式。

+0

非常感謝你。我改變了一些代碼,使其基於你的解決方案工作。 '$ .POST( 「addToList.php」, {studentsToAdd:studentsToAdd,模式:模式}, 功能(數據){ \t \t \t $( '#GROUPLIST')HTML(data.exemptList); \t。 。\t \t $( '#mainList')HTML(data.nonexemptList); }, 「JSON」 );'和'回波json_encode(陣列( \t \t 'exemptList'=> $ exemptList, \t \t「nonexemptList '=> $ nonexemptList \t \t));'code' – mrfrerichs

0

可能的解決方案是在返回JSON對象時解碼。此外,[]內需要的東西有引號周圍:

function(data) { 
    var json = JSON.parse(data); 

    $('#groupList').html(json["exemptList"]); 
    $('#mainList').html(json["nonexemptList"]); 
} 

而且,也許嘗試$就,並設置的dataType以JSON(即使默認是智能猜測,這應該由於PHP是發送一個JSON對象,反正工作)

0

也許你可以試試:

function(data) { 
    $('#groupList').html(data["exemptList"]); 
    $('#mainList').html(data["nonexemptList"]); 
} 

exemptListnonexemptList很可能被視爲變量而不是名字。