1

テキストエリアに Google アナリティクス コードを入力するようユーザーに求めるフォームがあります。次に、この文字列を ajax ポストに渡すと、無効なオブジェクトを渡しているというエラーが表示されます。(エラー メッセージは非常に長いため、ここでは貼り付けません。)

予想どおり、Google アナリティクスのコードは次の形式になっています。

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'some_number']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

そして、これを使用してサーバーに投稿します。

        $.ajax({
            type: "POST",
            url: "Settings.aspx/setStats",
            data: "{'skey': 'ga_code', 'sval':'" + el.val() + "'}",
            dataType: "json",
            contentType: "application/json; charset=utf-8"
        }); // el.val() being the google analytics code..

エラーなしでこれを投稿するにはどうすればよいですか? また、ユーザーが更新する必要がある場合は、私もそれを取得する必要があります..それを受け取るときにも同じ問題が発生しますか?

4

1 に答える 1

2

あなたの目的はそのままではそうではありません。それは文字列です。文字列をオブジェクトとして渡しています..次を試してください:

data: { skey: 'ga_code', sval: el.val() },

通常、オブジェクトはドキュメント ページに記載されているようにクエリ文字列に変換されますが、文字列をコンバーターに渡すため、うまくいかないと思います。

アップデート:

私は少し間違っていたようです。上記は有効なjsonではありません。上記の修正として、以下が機能するはずです。

data: { "skey": "ga_code", "sval": el.val() }

キーと値は、私が読んでいるものから二重引用符で囲む必要があります. 最後に、このサイトで JSON が有効かどうかをテストすることをお勧めします。

それでもうまくいかない場合は、contentType を次のように変更することをお勧めします。

"application/x-www-form-urlencoded; charset=utf-8"
于 2012-09-18T00:15:22.487 に答える