这是我的代码,基本上我有一个在jQuery中编写的通用open_modal函数,我想使用data-fields
来传递{'json':'data'}
。
所以继承我的代码。
HTML
<a href="#" class="send_request" data-dataset="{'test':1}" data-url="/test.html">Data load!</a>
<div id="area"></div>
的jQuery
$("body").delegate(".send_request", 'click', function(e) {
var $this = $(this);
var $modal_data = $("#area");
var $url = $this.attr('data-url');
var $dataset = JSON.stringify($this.data('dataset'));
alert($dataset);
$("#area").load($url,$dataset);
return false;
});
基本上它不工作,数据没有被传递。是否需要先以某种方式解析数据字段数据?
答案 0 :(得分:1)
data-dataset中的对象在检索时已经是一个JSON对象,在指定JSON属性名称时也需要双引号。执行以下操作应该有效:
在您的html代码段中:
data-dataset="{'test':1}"
至data-dataset='{"test":1}'
在你的JS代码中
var $dataset = JSON.stringify($this.data('dataset'));
到var $dataset = $this.data('dataset');
以下是您的jsfiddle http://jsfiddle.net/C3Cbe/2/的修改版本。
希望有所帮助
答案 1 :(得分:0)
您的代码段很好地检索了两个数据片段,但稍后它使用文字JSON字符串(而不是JavaScript对象)提供AJAX调用:
$("#area").load($url,$dataset);
这最终会发生在这样的GET请求中:
/test.html?%22{%27test%27:1}%22
......这可能不是你想要的。
<强>更新强>
我的推荐是:
JSON.parse()
或jQuery等效。答案 2 :(得分:0)
属性值已经被字符串化,您必须通过JSON.parse
运行它以将其从JSON文本转换为JavaScript对象。
无法判断是否应将其转换为JavaScript对象,因为我们不知道请求另一端的服务器需要什么。你当然不应该stringify
它。
但是,您的示例是无效的JSON。必须使用"
个字符引用JSON字符串。 '
是不可接受的。