2011-08-09 59 views
0

一直在讀php和json,我正在嘗試這段代碼不工作,我無法弄清楚爲什麼。任何幫助表示讚賞。Javascript,php,mysql和json讓我難以忍受

我從我的html文件onLoad()調用JavaScript函數。這功能是

function getSched() 
    { 
     $.post("schedlz.php", {dat: ""+inputString+"", action: "searchSched"}, function(data) 
    { 
      var y=""; 
    if(data.length >0) 
    { 
     var obj = JSON.parse(data); 
     y = getRes (data); 
     } 
     else //some error handler 
} 
function getRes(data) 
{ 
    var str=""; 
    var obj = JSON.parse (data); 
    alert (data.length + " | " +obj + " | "); 
    return str; 
} 

在schedlz.php文件

$conn = getDbConn(); 
mysql_select_db("myschedulez", $conn); 
$result = mysql_query($sql,$conn) or die('Error: ' . mysql_error()); 
    $rows = array(); 
    while ($r = mysql_fetch_assoc($result)) 
    { 
     // $rows['schedulez'][] = $r; 
     $rows[] = $r; 
    } 
    echo json_encode($rows); 
mysql_close($conn); 

的問題是,我得到的數據傳回在正確的JSON格式,但是當我解析它,有沒有對象。這裏可能會出現什麼問題?

+0

您的帖子if語句存在JavaScript錯誤。或者完全移除其他的東西,或者在它後面放置空的大括號。你確定你的查詢獲得結果嗎? – Beez

+0

你是否有意複製你的'getSched()'函數,可能只顯示一些部分,或者它實際上是這樣搞砸了? – ayublin

+0

對不起,我可能已經造成了我的不完整的副本和過去的代碼造成的混亂。我的代碼中沒有JavaScript錯誤,這是我在複製和粘貼中的不合理之處。 – radical

回答

1

您需要將dataType參數添加到您的$.post,您的情況爲json
我也不確定在樣本中是否正確關閉了$.post,因此我還添加了關閉);

function getSched() 
{ 
    $.post("schedlz.php", 
    {dat: ""+inputString+"", action: "searchSched"}, 
    function(data) { 
     var y=""; 
     if(data.length >0) 
     { 
     var obj = JSON.parse(data); 
     y = getRes (data); 
     } 
     else {} //some error handler 
    }, 
    'json' 
    ); 
} 
+0

王牌,這個伎倆!我看着jQuery.post文檔,並意識到數據類型的「智能猜測」並不真正起作用:) – radical

+0

是的,在我之前也發生過,:) – ace

+0

很高興聽到我不是唯一的;)任何關於意外字符錯誤的想法?謝謝。 – radical