2

jQuery の $.post() 関数を使用して、JSON 文字列で Ajax 呼び出しを行っています。呼び出しは次のようになります。

$.post(
    urlVar,
    jsonVar,
    function(data){
        //do stuff
    },
    'json'
)
.complete(function(){
    //do other stuff
});

jsonVarを作成するには、このコードを使用しています

var1 = {};
var1.id = fooId;
var1.amount = fooAmount;
var1.zoom = fooZoom;
jsonVar = JSON.stringify(var1);

呼び出しを機能させるには、jsonVarは次のようになります。

{id:fooId, amount:fooAmount, zoom:fooZoom}

しかし、それはこのように見えます

{"id":fooId, "amount":fooAmount, "zoom":fooZoom}

二重引用符が原因で、コードが機能しなくなりました。それらを取り除く方法がわかりませんでした。誰でも私を助けることができますか?

重要:

$.post()次のように関数を配置すると、コードは機能します。

$.post(
    urlVar,
    {id: fooId, amount: fooAmount, zoom: fooZoom},
    function(data){
        //do stuff
    },
    'json'
)
.complete(function(){
    //do other stuff
});
4

3 に答える 3

1

JSON 仕様では、キーには二重引用符が必要であると規定されています。

二重引用符が原因でコードが機能しないとはどういう意味ですか? JSON.parseを使用して、JSON を解析してオブジェクトに戻します。これは、多くの最新のブラウザーに組み込まれているか、json2ライブラリーを使用してシムすることができます。

于 2012-06-27T12:12:58.310 に答える
0

postこのように呼び出しを変更します

$.post(
    urlVar,
    {var1:jsonVar},
    function(data){
      //do stuff
   },
   'json'
)
.complete(function(){
   //do other stuff
});

そしてもちろん、受信アプリを少し調整する必要があります

于 2012-06-27T12:24:25.160 に答える
0

このコードを考えると:

var fooId = 'foodyfood';
var fooAmount = 10.20;
var fooZoom = 'zoomer';
var var2 = {};

var var1 = {}; 
var1.id = fooId; 
var1.amount = fooAmount; 
var2.zoom = fooZoom; 
jsonVar = JSON.stringify(var1); 
$('#showme').text(jsonVar);

showme に表示される値は次のようになります。

{"id":"foodyfood","amount":10.2}

したがって、あなたの例には欠陥があるように見え、実際には二重引用符を指定する JSON 標準ではありません。

編集:投稿の使用は次のものと同等です:

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

編集後の2番目の例では、オブジェクトをオブジェクトとして処理することを除いて。

ここのドキュメントの例を参照してください: http://api.jquery.com/jQuery.post/

このフォームで:

$.post("test.php", { name: "John", time: "2pm" },   function(data) {
     alert("Data Loaded: " + data);   
});

あなたが持っている場合:

var mytest =  { name: "John", time: "2pm" };

それは次のようになります:

{"name":"John","time":"2pm"}

ここで実際の例を参照してください: http://jsfiddle.net/v4NHv/

于 2012-06-27T12:24:03.963 に答える