0

私はjavascript番号とに「少し」問題がありNaNます。

JSON形式のajaxPOSTメソッドを介して1つの数値を取得しています。

$.post('test.php?a=b', {w: w}, function(json) {
    desktop.height = desktop.height - json.height * 2;
});

掛け算するとNaNになります。

desktop.height = desktop.height - json.height * 2;
NaN

JSONはオブジェクトですよね?したがって、これをfirebug / chromeコンソールに入力すると、期待どおりにint0が得られます。

var a = {}; a.t = 0; a.t * 2;
0

これをコンソールに入力しても、期待される0intが得られます。

var a = {}; a.t = "0"; a.t * 2;
0

私の質問は、何が起こっているのか、どうすれば修正できるのかということです。

4

6 に答える 6

1

Content-Typeヘッダーがサーバーからに設定されていない場合application/jsonでも、jQueryでjson文字列をJSオブジェクトに自動的に解析する場合は、呼び出しを追加する必要がありdataType jsonます$.post

$.post('test.php?a=b', {w: w}, function(json) {
    desktop.height = desktop.height - json.height * 2;
  },'json');

$.parseJSONまたは、このように自分で解析する必要があります

  $.post('test.php?a=b', {w: w}, function(json) {
     json = $.parseJSON(json);
     desktop.height = desktop.height - json.height * 2;
  });
于 2012-05-29T12:50:08.277 に答える
0

それはJSON文字列の形式に依存するので、{height:<num>}そうであればそれは正しいです。しかし、実際には文字列である可能性があります。最初にintとして解析してみましたか?

parseInt(...)
于 2012-05-29T12:49:08.793 に答える
0

またはです。desktop.height_json.heightNaN

于 2012-05-29T12:50:06.017 に答える
0

数値を取得したら、Javascript のparseInt()メソッドを使用してそれらを解析します。

于 2012-05-29T12:48:02.023 に答える
0

JSON は、Javascript オブジェクトの文字列バージョンです。JSON.parse(text) を使用して、投稿から受け取った文字列からオブジェクトを作成します。私はあなたの投稿方法に慣れていませんが、試してみます

function(JSON.parse(json)) {
    desktop.height = desktop.height - json.height * 2;
} 
于 2012-05-29T12:56:01.660 に答える
-1

数値を取得したら、JS Number()メソッドを使用してそれらを解析します:)

于 2012-05-29T12:57:55.730 に答える