使用 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

将c#集合序列化为视图中的jquery数组以通过ajax方法传递给控制器

ajax传递json数组对象

前端AJAX传递数组给Springmvc接收处理

js变量传递给json

如何使用 Ajax 调用 MVC4 传递两个字符串数组