簡體   English   中英

jQuery Ajax:數據對象中的對象

[英]Jquery ajax: object in data object

我需要在數據對象中傳遞一個對象,但是它不起作用

我使用在這個網站上發現的以下功能,非常有用,可以將表單數據轉換為JSON

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

然后我需要將該對象作為子對象傳遞,但是它不起作用。 過濾器甚至沒有顯示在檢查器的查詢字符串參數中

var filters = $('.filtersForm').serializeObject();

$.ajax({
    type: 'GET',
    data: {script:'search',page:page,filters:filters},
    success: function(data){
    }
});

在此處輸入圖片說明

查看圖片中如何缺少“過濾器”

有人可以解釋一下為什么我不能傳遞這樣的對象嗎?

嘗試以下方法:

$.ajax({
  type: 'POST',
  data: JSON.stringify({
    script: 'search',
    page: page,
    filters: filters
  }),
  contentType: 'application/json'
});
  1. 類型GET更改為POST 這將允許您發送請求正文。
  2. 使用內置的JSON對象對數據參數進行字符串化,以將JS對象字符串化為JSON格式的字符串。 (舊版瀏覽器可能沒有此內置對象,在這種情況下,請使用json2.js添加它)
  3. contentType設置為application/json 這基本上表明request-body是這種類型的...這是因為我們只是將其字符串化為JSON。

嘗試指定您的filters
例如在try中: jsonfilter = JSON.stringify(filters);
如果您使用MVC和ASP.Net,則可以嘗試在HTTPWebMethode中使用jsonResult作為Return,可以嘗試指定參數

  public JsonResult myPostMethode(string script,object page,List<object> filters){

    //make some usefull 
    var model = script;
    return(model,JsonRequestBehavior.AllowGet);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM