0

ヘッダーの下のコードで、jquery で ajax リクエストを使用して奇妙なコンポートメントを発行しています。「status」という変数で STATUS を取得できません。別の変数名で正常に動作するようです。知りたいですなぜ ?

$.ajax({ 
     type: "GET", 
     url: myConnect.prototype.URL, 
     data: params, 
     error: this.errorHandler,
     success: function(data){ 
          response = JSON.parse(data);

          status = response.STATUS;
          if(status.SUCCESS){ //never true since status is not an object.
               console.log('success !');
          }
     }
});

データは:{"STATUS":{"SUCCESS":1,"DESCRIPTION":""}}

ステータス変数は文字列として設定され、クロムのウォッチ式ビューでその値を確認できます:

status: "[object Object]"

しかし、この変数 't' (またはその他のもの) を呼び出すと、条件が true になり、' success ! ' と記録されます。'

説明はありますか?

EDIT : chrome によって表示される応答解析済みオブジェクト:

 response : Object
      STATUS: Object
           DESCRIPTION: ""
           SUCCESS: true
      _proto_: Object
 _proto_: Object
4

1 に答える 1

2

ステータスをローカルにすると機能するはずです

$.ajax({ 
     type: "GET", 
     url: WellcomsConnect.prototype.URL, 
     data: params, 
     error: this.errorHandler,
     success: function(dara){ 
          response = JSON.parse(data);

          var status = response.STATUS; // make it local
          if(status.SUCCESS){ //never true since status is not an object.
               console.log('success !');
          }
     }
});

編集:

以下の説明は、実際には Chrome のみです - Firefox は正常に動作します - IE9 は動作しません

そうでない理由windowは、ステータスプロパティが既にあり、ステータスオブジェクトがオブジェクトでは[object Object]なく文字列として格納されているためです

ここに画像の説明を入力

これをIE9/Firefox/Chromeでテストしました

Firefox の場合のみ動作- グローバルを使用

それで

全体で作業- ローカルを使用

于 2013-03-20T14:51:06.603 に答える