Heim >Web-Frontend >Front-End-Fragen und Antworten >So verwenden Sie die Methode $.param ohne URL-Kodierung

So verwenden Sie die Methode $.param ohne URL-Kodierung

PHPz
PHPzOriginal
2023-04-17 14:59:25873Durchsuche

Bei der Verwendung der Ajax-Anfrage von jQuery verwenden wir häufig die Methode $.param, um ein Objekt in eine Abfragezeichenfolge zu serialisieren und so die Datenübertragung zu erleichtern. Die Methode $.param führt automatisch eine URL-Codierung der Daten durch und wandelt beispielsweise Leerzeichen in %20 um. Manchmal möchten wir das Objekt jedoch ohne URL-Codierung serialisieren und so belassen, wie es ist. In diesem Artikel wird erläutert, wie Sie die Methode $.param ohne URL-Codierung verwenden.

Schauen wir uns zunächst die grundlegende Verwendung der $.param-Methode an. Angenommen, wir haben das folgende Objekt:

var data = {
  name: 'John Doe',
  age: 30,
  company: 'ABC Inc.',
  address: {
    street: '123 Main St',
    city: 'Anytown',
    state: 'CA',
    zip: '12345'
  }
};

Wir können die Methode $.param verwenden, um es in eine Abfragezeichenfolge zu serialisieren, wie unten gezeigt:

var queryString = $.param(data);

// queryString 的值为:
// "name=John%20Doe&age=30&company=ABC%20Inc.&address%5Bstreet%5D=123%20Main%20St&address%5Bcity%5D=Anytown&address%5Bstate%5D=CA&address%5Bzip%5D=12345"

Wie Sie sehen können, codiert die Methode $.param das Objekt URL-codiert und konvertiert Leerzeichen bis %20, einige Sonderzeichen sind kodiert. Wenn wir das ursprüngliche Aussehen beibehalten wollen, müssen wir einen kleinen Trick anwenden.

Zuerst müssen wir eine Funktion definieren, die keine URL-Kodierung durchführt, wie folgt:

function serializeParam(obj) {
  var str = [];
  for (var p in obj) {
    if (obj.hasOwnProperty(p)) {
      str.push(encodeURIComponent(p) + '=' + obj[p]);
    }
  }
  return str.join('&');
}

Die Funktion dieser Funktion besteht darin, das Objekt in eine Zeichenfolge umzuwandeln, die keine URL-Kodierung durchführt. Als nächstes können wir diese Funktion verwenden, um das Objekt in eine Abfragezeichenfolge zu serialisieren, wie unten gezeigt:

var queryString = Object.keys(data).map(function(key) {
  var value = data[key];
  if (typeof value === 'object') {
    value = serializeParam(value).replace(/%20/g, '+');
  }
  return encodeURIComponent(key) + '=' + value;
}).join('&');

// queryString 的值为:
// "name=John Doe&age=30&company=ABC Inc.&address[street]=123 Main St&address[city]=Anytown&address[state]=CA&address[zip]=12345"

Wie Sie sehen können, ist die von dieser Methode generierte Abfragezeichenfolge nicht URL-codiert, sondern ersetzt Leerzeichen durch Pluszeichen. Wenn der Server, der die Daten empfängt, diese Übertragungsmethode unterstützen kann, können wir diese Methode daher verwenden.

Zusammenfassend lässt sich sagen, dass wir Objekte in jQuery ohne URL-Codierung serialisieren können, indem wir eine benutzerdefinierte Funktion verwenden, die unseren spezifischen Anforderungen entspricht.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Methode $.param ohne URL-Kodierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn