Javascript.RU

PHP-функция: http_build_query

Javascript:

function http_build_query( formdata, numeric_prefix, arg_separator ) {	// Generate URL-encoded query string
	// 
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Legaev Andrey
	// +   improved by: Michael White (http://crestidg.com)

	var key, use_val, use_key, i = 0, tmp_arr = [];

	if(!arg_separator){
		arg_separator = '&';
	}

	for(key in formdata){
		use_key = escape(key);
		use_val = escape((formdata[key].toString()));
		use_val = use_val.replace(/%20/g, '+');

		if(numeric_prefix && !isNaN(key)){
			use_key = numeric_prefix + i;
		}
		tmp_arr[i] = use_key + '=' + use_val;
		i++;
	}

	return tmp_arr.join(arg_separator);
}

Примеры:

http_build_query({ foo: 'bar', baz: 'boom', cow: 'milk', php: 'hypertext processor' }, '', '&');
'foo=bar&baz=boom&cow=milk&php=hypertext+processor'

http_build_query({0: 'foo', 1: 'bar', 2: 'baz', 3: 'boom', cow: 'milk', php :'hypertext processor'}, 'myvar_');
'myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hypertext+processor'


Автор: tit, дата: 25 августа, 2008 - 14:43
#permalink

Эта функция не поддерживает вложенные массивы, поэтому не может считаться полноценным аналогом.


Автор: Гость (не зарегистрирован), дата: 27 декабря, 2008 - 00:48
#permalink

а если с таким queryObj?

var queryObj = {
    foo: 'bar',
    baz: 'boom',
    cow: 'milk',
    php: 'hypertext processor',
    multiple: ['a','b','c']
};

ведь select может содержать несколько полей, а ключ в хеше может быть только один, мы не сможем написать нечто подобное:

queryObj = {
    multiple: 'a',
    multiple: 'b',
    multiple: 'c'
}

да и php'шная оригинальная функа правильно обрабатывает вложенные массивы.
так чта незачет.


Автор: Гость (не зарегистрирован), дата: 4 октября, 2017 - 12:29
#permalink

Ну для вложенных массивов/объектов рекурсия ещё нужна


Автор: Syzako (не зарегистрирован), дата: 9 ноября, 2017 - 09:02
#permalink

Для тех кто ищет способ обмениваться массивами через GET запрос.

//
// JS
//

var Object = {};
Object.Article = [];
Object.Article.push({"f1" : 1, "f2" : "абв"});
Object.Article.push({"f1" : 2, "f2" : "qwerty"});

var JsonStr = JSON.stringify(Object);
	
window.location.href = window.location.href + '?object=' + encodeURIComponent(JsonStr);
//
// PHP
//

$InputString = isset($_GET['object']) ? urldecode($_GET['object']) : null;
	
$Object = json_decode($InputString, true);

Автор: alexandrlyalyuk@gmail.com (не зарегистрирован), дата: 12 марта, 2019 - 17:27
#permalink

Используйте jQuery.param() либо стяните исходник


Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 00:16
#permalink

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 13:29
#permalink

Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
6 + 1 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum