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. 在发送和检索 Json 时使用 Json2 库对 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 回答