使用数据字段存储JSON?

时间:2012-11-26 13:03:16

标签: jquery ajax json html5

这是我的代码,基本上我有一个在jQuery中编写的通用open_modal函数,我想使用data-fields来传递{'json':'data'}

所以继承我的代码。

JSfiddle

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;
    });​

基本上它不工作,数据没有被传递。是否需要先以某种方式解析数据字段数据?

3 个答案:

答案 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

......这可能不是你想要的。

<强>更新

我的推荐是:

  1. 修复您的JSON字符串,该字符串当前无效(您使用单引号作为属性名称)
  2. 使用JSON.parse()或jQuery等效。

答案 2 :(得分:0)

属性值已经被字符串化,您必须通过JSON.parse运行它以将其从JSON文本转换为JavaScript对象。

无法判断是否应将其转换为JavaScript对象,因为我们不知道请求另一端的服务器需要什么。你当然不应该stringify它。

但是,您的示例是无效的JSON。必须使用"个字符引用JSON字符串。 '是不可接受的。