2013-02-07 149 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); 
}