使用 ajax 导入 JS 数组以传递给 JQuery 中的函数/插件
Posted
技术标签:
【中文标题】使用 ajax 导入 JS 数组以传递给 JQuery 中的函数/插件【英文标题】:Import a JS array using ajax to pass though to a function/plugin in JQuery 【发布时间】:2011-10-24 00:07:17 【问题描述】:我有一个生成的数组,如果硬编码,它会将数组对象传递给一个函数进行处理。
例如:
$("#termCloud").jQCloud([text:'some',weight:10,text:'thing',weight:8]);
但是,我需要使其更具动态性,因此在外部生成数组并使用 ajax 导入。这就是我正在尝试的:
(generateArray.asp 将输出text:'some',weight:10,text:'thing',weight:8
)
$.ajax(
url: '/generateArray.asp',
success: function(data)
$("#wordCloud").jQCloud([data]);
)
我尝试了几种数据类型,但都失败了。
问题似乎是在工作版本中,JQCloud 插件将数组作为对象接收:[object Object],[object Object]
,而我的 ajax 版本将其作为字符串接收/发送:text:'some',weight:10,text:'thing',weight:8
有没有办法导入数组并将其作为适当的数组而不是字符串传递给 JQCloud 函数/插件,或者将字符串转换为数组进行处理?
非常感谢..
回应以下两个答案;我应该指出,返回似乎没有被识别为有效的 JSON 数据......
【问题讨论】:
【参考方案1】:我猜你应该在将数据变量发送到插件之前对其进行 JSON 解析:
var json = JSON.parse(data);
$("#wordCloud").jQCloud([json]);
...或者你可以添加
dataType : 'json'
...到ajax函数调用中的settings参数。
【讨论】:
如果你的意思是$.parseJSON(data)
我试过了(对不起应该说)- Firebug 报告它是无效的 JSON
不幸的是 dataType:'json'
失败了,不相信返回是有效的 JSON 或者 JQuery 可以这样读取它..
看来是这样。我尝试在 Firebug 中解析字符串,但它返回了无效的 JSON。通过将单引号更改为双引号,我得到了正确的结果: var foo = $.parseJSON('["text":"some","weight":10,"text":"thing","weight" :8]');我不知道这个,但它似乎在这里被覆盖:***.com/questions/2275359/…
太棒了,感谢@Jørgen - 我已经恢复拆分返回的字符串并重建数组 - 这好多了:-) 太棒了,再次感谢......【参考方案2】:
试试:
success: function(data)
$("#wordCloud").jQCloud([text: data[0].text, weight: data[0].weight, text: data[1].text, weight: data[1].weight]);
响应由 $.Ajax() 函数自动转换为对象,因为它是一个 json 字符串。
【讨论】:
感谢您的回复 - 由于之前尝试解析 JSON 或将 dataType 设置为 JSON 失败,因此不确定整个 JSON 字符串。确实创建了足够的对象,但不幸的是,这些值是未定义的,所以无论如何它都会失败。我会冒险猜测(不太了解 JSON)返回不是有效的 JSON,或者至少不是 JQuery 可以破译以上是关于使用 ajax 导入 JS 数组以传递给 JQuery 中的函数/插件的主要内容,如果未能解决你的问题,请参考以下文章
将 PHP $_POST 数组传递给 javascript/jQuery 以通过 ajax 发送回 PHP