2013-02-07 152 views
0

我已經寫了一個代碼,它將查詢發送到mysql數據庫,然後使用$ row = mysql_fetch_assoc($ result)逐行獲取結果。將參數從php傳遞到javascript

我需要將每行的數據發送到一個javascript函數。

下面是一段代碼,我用:

while($row = mysql_fetch_assoc($result)) 
{ 

echo '<script type="text/javascript">'.'queryResults('. json_encode($row) . ');'.'</script>'; 

} 

在我的javascript函數我有:

function queryResults(data){ 
var results = JSON.parse(data);} 

不過,我得到錯誤:

"SyntaxError: JSON.parse: unexpected character" 

在哪裏問題與我的代碼?

+0

這是從字面上不可能的一天。爲什麼不調用console.log(數據)之前調用JSON.parse()。 – zallarak

+2

什麼是數據?你真的輸出噸的腳本標籤? – Bergi

+1

這裏你不需要'JSON.parse'。將PHP中的JSON迴應到JavaScript中只會在JavaScript中創建一個對象字面值。 –

回答

2

JSON一個腳本標籤中被解釋爲一個JavaScript object literal - 你實際上傳遞一個對象到queryResults功能:這可能解決問題。要使用JSON.parse()(您不需要),您需要將其包裝在JavaScript字符串分隔符中,並轉義由json_encode返回的字符串中的所有引號,以便JavaScript將看到有效的字符串。

順便說一句,您的示例函數在其簽名中缺少data參數。

+0

好的。大!但是,我怎樣才能使用它作爲JSON字符串?你能舉出一個如何逃避報價的例子嗎?我不知道該怎麼做。 – hAlE

+0

它看起來像''var obj = JSON.parse(''.addslashes(json_encode($ row))。'「);'' – Bergi

0

您需要表格的字段名稱。

json_encode($row['fieldname']) 
0

我認爲問題是你沒有在函數簽名中指定參數。直接

function queryResults(data){ 
var results = JSON.parse(data); 
}