0

私はJavascriptにあまり精通しておらず、ここで何が起こっているのか理解できないということから始めましょう。

私は次の機能を持っています:

        self.search = function () {

            var searchTerms = {
                "City":  this.cityName,
                "State": this.stateName,
                "StoreNumber": this.storeNumber,
                };                


                $.ajax("/api/SearchApi", {
                    data: searchTerms,
                    type: "POST", contentType: "application/json",
                    success: function (result) {
                        alert(result);                            
                        }
                    }
                });

送信すると、期待どおりに素敵なJSONオブジェクトを送信する代わりに、次のようにフォーマットされたJSONオブジェクトが送信されます。"City=testing&State=AL&StoreNumber=test "

理想的には、結果を返すことができるようにオブジェクトをサーバーに渡すGETメソッドを使用したいのですが、getメソッドを使用すると、上記をAPI呼び出しURLに追加するだけで、URLリクエストが次のように形成されます。 :http://localhost:57175/api/SearchApi?City=testing&State=AL&StoreNumber=test

どんな助けでもいただければ幸いです。

4

2 に答える 2

2

JSONのdataTypeを$.ajax({ });オブジェクトに追加してください。それで問題は解決するはずです!

$.ajax({ 
    // ...

    data     : JSON.stringify( searchTerms ), // Encode it properly like so
    dataType : "json", 

    // ...
});
于 2013-03-04T18:36:55.937 に答える
1

2つのこと

  1. jsonコンテンツタイプ(データタイプではない)をajaxオブジェクトに追加します。注意すべき重要な点は、サーバーがこの場合utf-8で使用している文字セットです。

  2. Json2ライブラリを使用して、Jsonを送信および取得するときに、Jsonを文字列化および解析します。https ://github.com/douglascrockford/JSON-js/blob/master/json2.js

    $.ajax({
        url: URL,
        type: "POST",
        //Stringify the data you send to make shure its properly encoded
        data: JSON.stringify(DATA),  
        //This is the type  for the data that  gets sent            
        contentType: 'application/json; charset=utf-8',
        //This is for the data you receive
        dataType: "json"
    }).done(function(data) {
       var dataYouGet = JSON.parse(data);
    }).fail(function(xhr, ajaxOptions, thrownError) {
    
    }).always(function(data) {
    
    });
    
于 2013-03-04T18:48:24.937 に答える