60

クエリ文字列として渡すことができるように、文字列にフラット化する必要がある JavaScript オブジェクトがあります。すなわち:

{ cost: 12345, insertBy: 'testUser' }になるだろうcost=12345&insertBy=testUser

この呼び出しに jQuery AJAX 呼び出しを使用することはできません。それを使用してオブジェクトを渡すことができることはわかっていますdataが、この場合はそうではありません。ただし、jQueryを使用してオブジェクトにフラット化しても問題ありません。

ありがとうございました。

4

12 に答える 12

84

jQuery 以外のバージョンは次のとおりです。

function toQueryString(obj) {
    var parts = [];
    for (var i in obj) {
        if (obj.hasOwnProperty(i)) {
            parts.push(encodeURIComponent(i) + "=" + encodeURIComponent(obj[i]));
        }
    }
    return parts.join("&");
}
于 2011-03-31T19:22:32.777 に答える
70

あなたがしたいjQuery.param

var str = $.param({ cost: 12345, insertBy: 'testUser' });
// "cost=12345&insertBy=testUser"

これは、data引数として渡されたオブジェクトをシリアル化するために jQuery によって内部的に使用される関数であることに注意してください。

于 2011-03-31T19:20:35.733 に答える
39

私のES6バージョン(純粋なJavascript、jQueryなし):

function toQueryString(paramsObject) {
  return Object
    .keys(paramsObject)
    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(paramsObject[key])}`)
    .join('&')
  ;
}
于 2016-10-03T09:32:10.603 に答える
15

$.param()メソッドを試してください:

var result = $.param({ cost: 12345, insertBy: 'testUser' });
于 2011-03-31T19:20:11.317 に答える
4

別のバージョン:

function toQueryString(obj) {
    return Object.keys(obj).map(k => {
      return encodeURIComponent(k) + "=" + encodeURIComponent(obj[k])
    })
    .join("&");
}
于 2016-10-21T17:58:53.747 に答える
4

一般的な JavaScript:

function toParam(obj) {
  var str = "";
  var seperator = "";
  for (key in obj) {
    str += seperator;
    str += enncodeURIComponent(key) + "=" + encodeURIComponent(obj[key]);
    seperator = "&";
  }
  return str;
}


toParam({ cost: 12345, insertBy: 'testUser' })
"cost=12345&insertBy=testUser"
于 2011-03-31T19:24:15.440 に答える
3
var myObj = { cost: 12345, insertBy: 'testUser' },
    param = '',
    url   = 'http://mysite.com/mypage.php';    

for (var p in myObj) {
  if (myObj.hasOwnProperty(p)) {
    param += encodeURIComponent(p) + "=" + encodeURIComponent(myObj[p]) + "&";
  }
}

window.location.href = url + "?" + param;
于 2011-03-31T19:23:49.883 に答える
1

あなたはこれを使うことができます

function serialize(obj)
{
    let str = []

    for(var p in obj)
    {
      if(obj.hasOwnProperty(p)) str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]))
    }

    return str.join('&')
}

このリンクで JSFiddle を試してください https://jsfiddle.net/yussan/kwmnkca6/

于 2016-07-27T09:12:50.857 に答える