2017-01-13 4 views
1

は、私が使うべき理由があるのコントローラに送信するオブジェクトにはどの構文を使用する必要がありますか?

構文1

$.ajax({ 
    url: url, 
    data: {foo: "foo", bar: 1},   // everything is declared 
    success: success, 
    dataType: dataType 
}); 

そしてない構文2

$.ajax({ 
    url: url, 
    data: {foo: valueOfFoo(), bar: calculateBar(100)}, // reference to functions 
    success: success, 
    dataType: dataType 
}); 

コントローラにオブジェクトを送信しますか?

jQuery APIの定義によれば、データの種類はオブジェクトまたはリクエストでサーバーに送信される文字列になります。

何とか私は構文1が「安全」だと思っていますが、これは迷信(数え切れないほどのバグ修正からの私の経験とペアになっている)かもしれません。

+1

私は違いを見ることができませんが、2番目のものは関数を実行し、最初のものと同じように結果を送信します。 –

+0

最初のスニペットはリテラルデータ '' foo "'と '1'を送り、2番目のスニペットは関数' valueOfFoo'と 'calculateBar'の戻り値を送ります。彼らはさまざまなことをしています。 –

+3

'' foo "/ 1'を返さなければならない関数の名前だと思います。 –

答えて

1

はIMO sendedではデータはどちらの場合も同じになりますコントローラに送信オブジェクトの用語には違いありません。

鮮明の用語では最初のアプローチは、あなただけの関数を呼び出すと、これらの呼び出しは、この部分の前に行うことができるとき定義中に余分な工程を行わず、適切dataオブジェクトを定義するので、クリーナー1のようですし、彼らは$.ajaxの中にそれらを呼び出す必要はありません。あなたが実際にいくつかの関数を呼び出す必要がある場合は

あなたは彼らが好き呼び出すことができます。このことができます

var foo = valueOfFoo(); 
var bar = calculateBar(100); 

$.ajax({ 
    url: url, 
    data: {foo: foo, bar: bar}, 
    success: success, 
    dataType: dataType 
}); 

希望を。

+1

それはもっと分かります、私もそうだと思います。データオブジェクトがどのように生成されたか(たとえば、コントローラに送信される前など)を読むことができるソースを知っていますか? – witefox

+0

あなたが何を意味するのかよく分かりません(しかし、データはHTTPリクエストメソッドに従って送信されます.2つの '' POST ''、 '' GET''は、クライアントとあなたはこの方法のすべてがhttp://stackoverflow.com/questions/504947/when-should-i-use-get-or-post-method-whats-the-difference- between-それら –

関連する問題