搜尋

首頁  >  問答  >  主體

javascript - ajax中post提交物件問題?

一般常規的是提交這種{a:1,b:2}數據,如果我要提交{a:1,b:2,c:{d:3, e:{f:5}}}這種內嵌物件的該怎麼做?

世界只因有你世界只因有你2750 天前592

全部回覆(5)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:33:36

    axios預設的contentType是application/json.是支援你這種格式
    如果你改了application/x-www-form-urlencoded的話.你要將有內嵌物件的欄位JSON化

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:33:36

    第一種
    http頭設定成

    Content-Type: application/json

    這種JSON資料可以格式化為JSON字串提交

    第二種
    http頭設定成

    Content-Type: application/x-www-form-urlencoded

    這時候要傳一個key進去,並且js物件也需要格式化成JSON字串,大概這個樣子

    data=JSON.stringify({a:1})

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:33:36

    內嵌物件和普通物件並沒有什麼本質上的區別,ajax提交資料都需要json化。
    如下是我封裝的ajax方法,請參考 xhr.setRequestHeader("Content-type", "application/json");JSON.stringify(data) 部分

    function ajax(url, method, data, callback){
        var xhr = new XMLHttpRequest();
        xhr.timeout = 3000;
        xhr.ontimeout = function(){
            console.log('网络超时, 请稍后重试!');
        };
        xhr.onload = function(){
            var s = xhr.status;
            if((s >= 200 && s < 300) || s == 304){
                var res = xhr.responseText;
                typeof callback == 'function' && callback(res);
            }
        };
        xhr.onerror = function(){
            console.log('网络问题, 请稍后重试!');
        };
        data = (method != 'GET' && typeof data=='object')?JSON.stringify(data):null;
        xhr.withCredentials = true;
        xhr.open(method, url, true);
        xhr.setRequestHeader("Content-type", "application/json");
        try{
            xhr.send(data);
        }catch(e){
            console.log('网络不佳, 请稍后重试!');
        }
    }
    ajax('你的链接','POST',你的数据,执行成功后的回调);

    回覆
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:33:36

    看你用什麼提交了,想jquery這種會幫你做自動字串化的就可以直接丟進去。

    做一個JSON.stringify操作就行了,後端再自行轉回來就可以了。

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-19 10:33:36

    常規的和你要提交的數據在本質上沒有區別吧

    回覆
    0
  • 取消回覆