2012-11-30 108 views
0

我的php/jquery腳本存在問題。 PHP腳本假設從MySQL數據庫獲取一組字段,然後將其解析爲JSON並進行回顯,以便我可以在我的Jquery腳本中抓取它。發送JSON給Jquery失敗

問題是,Jquery腳本沒有正確抓取數據,或者它沒有正確處理JSON - 或者我做錯事的最後一種可能性(這可能是這種情況,因爲Jquery是一個新領域爲我工作)。

我已經嘗試了很多不同的jQuery的腳本,我在互聯網上找到的,但這裏是我當前的代碼:

PHP:

<?php 
    include("../../config.php"); 
    $roomId = $_POST['roomId']; 

    $data = mysql_query("SELECT field FROM fields WHERE room = '$roomId' 
     AND value = 1 AND TYPE = ''") or die(mysql_error()); 

    while ($users = mysql_fetch_array($data)) { 
     echo json_encode($users); 
    } 
?> 

jQuery的腳本:

function UpdateRoom() { 
    var data = 'roomId='+roomId; 

    $.ajax({ 
     type: "POST", 
     url: "chatfunctions/getplacementfield.php", 
     dataType: 'json', 
     data: data, 
     success: function(data){ 
      var arrayValues = $.parseJSON(data); 
      $.each(arrayValues, function() { 
       $('#f' + parseInt(arrayValues.field).append('<div id="user" />'); 
      }); 
     } 
    }); 
} 

任何人都可以告訴我我做錯了什麼。如果這是不好的JQuery或PHP,然後告訴我什麼是錯的,因爲我前面提到我是Jquery的新手,而不是PHP的專家。

PS:我沒有得到任何錯誤回報在Firebug控制檯

+0

你不需要'$ .parseJSON()' - 你設置'數據類型:「json''所以jQuery在調用你的成功函數之前自動解析響應。如果這不起作用,那麼PHP發送它的方式可能有問題。我不是一個PHP的人,但我認爲'echo json_encode($ users);'是錯誤的,它反映了單個JSON片斷,每行一個。在循環內部,您需要以某種方式將每行添加到數組,然後在循環結束後回顯出整個數組的JSON編碼。 – nnnnnn

+0

忘了告訴jQuery腳本中的roomId變量是一個全局變量,而PHP正在從MySQL數據庫獲取數據,所以一切都很好 –

+0

@nnnnnn - >好了,已完成,數據現在在一個數組中,已經編碼爲json,併發回jQuery,但仍然沒有結果..嗯.. –

回答

0

試試這個,我希望你能從這個例子中得到一個想法。 -

PHP:

<?php 

    $con = mysql_connect("localhost","root",""); 
    $dbs = mysql_select_db("rs", $con); 

    $result = mysql_query("SELECT * FROM profile") or die(mysql_error()); 
    $json = array(); 
    while ($row = mysql_fetch_assoc($result)) { 
    $json[] = $row; 
    } 

    print json_encode($json); 
    exit; 

?> 

的Jquery:

$(function(){ 

    $.getJSON("userinfo.php",function(data) 
    { 
    $.each(data, function(i,data){ 
    var jsondata ="<li>Name : "+data.fname+" "+data.lname+"</li>"; 
    $(jsondata).appendTo("ol#userlist"); 
     }); 
     }); 
    }); 
0

嘗試設置,

header('Content-type: application/json'); 

您呼應的JSON數據之前。

你也應該刪除這行,var arrayValues = $ .parseJSON(data);並將數據傳遞給每個功能。 console.log(數據)來檢查它的一個用戶數組。