使用ajax导入JS数组以传递给JQuery中的函数/插件
我有一个生成的数组,如果硬编码,它会将数组对象传递给一个函数进行精细处理 例如:使用ajax导入JS数组以传递给JQuery中的函数/插件,ajax,arrays,jquery-plugins,jquery,Ajax,Arrays,Jquery Plugins,Jquery,我有一个生成的数组,如果硬编码,它会将数组对象传递给一个函数进行精细处理 例如: $("#termCloud").jQCloud([{text:'some',weight:10},{text:'thing',weight:8}]); 但是,我需要使其更具动态性,因此我将从外部生成数组并使用ajax导入。这就是我正在尝试的: (generateArray.asp将输出{text:'some',weight:10},{text:'thing',weight:8}) 我尝试了几种数据类型,但都失败了
$("#termCloud").jQCloud([{text:'some',weight:10},{text:'thing',weight:8}]);
但是,我需要使其更具动态性,因此我将从外部生成数组并使用ajax导入。这就是我正在尝试的:
(generateArray.asp将输出{text:'some',weight:10},{text:'thing',weight:8}
)
我尝试了几种数据类型,但都失败了
问题似乎是,在工作版本中,JQCloud插件以对象的形式接收数组:[object object],[object object]
,其中我的ajax版本以字符串的形式接收/发送数组:{text:'some',weight:10},{text:'thing',weight:8}
$.ajax({
url: '/generateArray.asp',
success: function(data){
$("#wordCloud").jQCloud([data]);
}
})
是否有方法导入数组并将其作为正确的数组而不是字符串传递给JQCloud函数/插件,或者将字符串转换为数组进行处理
非常感谢
回应以下两个答案;我应该指出,返回值似乎没有被识别为有效的JSON数据…我想您应该在将数据变量发送到插件之前对其进行JSON解析:
var json = JSON.parse(data);
$("#wordCloud").jQCloud([json]);
…或者你可以加上
dataType : 'json'
…在ajax函数调用中设置参数。尝试:
success: function(data){
$("#wordCloud").jQCloud([{text: data[0].text, weight: data[0].weight}, {text: data[1].text, weight: data[1].weight}]);
}
响应由$.Ajax()函数自动转换为对象,因为它是一个json字符串。如果您是指
$.parseJSON(数据)
我尝试过(抱歉,应该这么说)-Firebug报告它是无效的json,但是数据类型:'json'
失败,不确信返回的是有效的JSON,或者JQuery可以读取它。看起来是这样的。我尝试在Firebug中解析字符串,但它返回了无效的JSON。通过将单引号改为双引号,我得到了正确的结果:var foo=$.parseJSON('[{“text”:“some”,“weight”:10},{“text”:“thing”,“weight”:8}');我不知道,但这里似乎有介绍:太棒了,感谢@Jørgen-我已经恢复到拆分返回字符串并重建数组的状态-这更好:-)非常好,再次感谢…感谢您的回复-我不确定整个JSON字符串,因为以前解析JSON或将数据类型设置为JSON的尝试失败了。确实创建了足够多的对象,但由于未定义值,因此无论如何都会失败。我冒险猜测(对JSON不太了解)返回值不是有效的JSON,或者至少不是JQuery可以破译的