4

これが私のコードです。基本的に、jQueryで作成した汎用のopen_modal関数data-fieldsがあり、{'json':'data'}.

だからここに私のコードがあります。

JSフィドル

HTML

    <a href="#" class="send_request" data-dataset="{'test':1}" data-url="/test.html">Data load!</a>
<div id="area"></div>

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

基本的に機能していません。データが渡されていません。データフィールドのデータを何らかの形で最初に解析する必要がありますか?

4

3 に答える 3

2

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/の修正版です。

それが役立つことを願っています

于 2012-11-26T13:54:15.400 に答える
0

JSON.parse属性値はすでに文字列化されているため、JSON テキストから JavaScript オブジェクトに変換するには、それを実行する必要があります。

リクエストの相手側のサーバーが何を期待しているかがわからないため、これを JavaScript オブジェクトに変換する必要があるかどうかを判断することはできません。あなたは確かにそれをするべきではありませんstringify

ただし、あなたの例は無効な JSON です。JSON 文字列は、文字で引用符で囲む必要があります"'は受け入れられません。

于 2012-11-26T13:32:15.237 に答える