Intereting Posts
Laravel / Eloquent: hasManyThrough WHERE Избавьтесь от Index.php в URL-адресах CodeIgniter Когда и почему следует использовать $ _REQUEST вместо $ _GET / $ _POST / $ _COOKIE? Проверка, работает ли ваш код на 64-битном PHP Как вызвать метод класса PHP из функции JavaScript Для чего нужен код исключения для PHP? Любой сценарий использования? Предел аргументов POST в html или php PHP – действие формы, вызывающее себя, как отображать все на одной странице? Отчет в формате PDF Поколение в Zabbix не работает Регулярное выражение для содержимого внутри <td> и </ td> php xpath с текстом () и SimpleXMLElement-> xpath не соответствует ожидаемым результатам xpath Продолжайте получать «Ежедневный лимит неисполненного использования превышен. Продолжение использования требует регистрации "при попытке Google плюс вход в мое веб-приложение Добавьте два часа к дате в течение заданных часов, которые переносятся на следующий таймфрейм Импорт и сохранение данных из csv-файла в yii php mysql сортировать по количеству строк по убыванию

php array в url от json

Вот что я хочу сделать:

У меня есть такой json, как это

var foo = { format:"json", type:"test", id:"26443" }; 

и я очень хочу поместить это в url, как это

  'http://example.com/a:3:{s:6:"format";s:4:"json";s:4:"type";s:4:"test";s:2:"id";s:5:"26443";}' 

который я затем буду вставлять в ajax-вызов, но все, что я пробовал, приводит к ошибке 501 BAD URI, может кто-нибудь сказать мне, как это сделать

Я пробовал этот EDIT:

после того, как он снова посмотрел и предупредил результаты этой функции, он строит результаты правильно, они просто не используют прокси-сервер либо ajax, либо браузер

  function js_array_to_php_array(a) { var a_php = ""; var total = 3; for (var key in a){ total; a_php = a_php + "s:" + String(key).length + ":\"" + String(key) + "\";s:" + String(a[key]).length + ":\"" + String(a[key]) + "\";"; } a_php = "a:" + total +":{" + a_php + "}"; return a_php; } 

когда я использую http fox, он возвращает это обратно

  http://example.com/a:3:%7Bs:6:%22format%22;s:4:%22json%22;s:4:%22type%22;s:4:%test%22;s:2:%22id%22;s:5:%2226443%22;} 

который я нахожу странным, потому что он уничтожает все, кроме последней фигурной скобки

Почему бы просто не использовать «нормальную» строку запроса?

 http://example.com/?type=test&id=26443 $type = $_GET['type']; $id = $_GET['id']; 

Разве я что-то не хватает?

Для этого уже есть функция jQuery! Используйте его и любите.

http://api.jquery.com/jQuery.param/

так что, оказывается, нет ничего плохого в функции js_array_to_php_array, которая была выполнена именно так, как мне было нужно, чтобы проблема заключалась в том, что мне нужно было использовать JSONP вместо JSON при запуске моего вызова ajax, поскольку я шел через перекрестный домен, который также объясняет, почему код работал в URL, но не тогда, когда я запускал ajax

Спасибо за вашу помощь

 http://example.com/a:3:{s:6:"format";s:4:"json";s:4:"type";s:5:"test";s:2:"id";s:5:"26443";} 

501 – это неверный URL. У URL-адресов определенно не может быть кавычек в них или (для большей части) фигурных скобок.

Если вам действительно нужно представить литературную структуру PHP в URL-адресе, не делая это как обычный набор параметров запроса, вам придется URL-кодировать недопустимые символы, которые вы можете сделать так:

 url= 'http://example.com/'+encodeURI(js_array_to_php_array(foo)); 

в результате чего:

 http://example.com/a:3:%7Bs:6:%22format%22;s:4:%22json%22;s:4:%22type%22;s:5:%22test%22;s:2:%22id%22;s:5:%2226443%22;%7D 

кстати это:

 String(key) 

является излишним: ключи объектов всегда являются строками в JS, даже если вы помещаете их в числа;

 "\"" + String(a[key]) + "\"" 

будет ошибочным, если значение может содержать цитату или обратную косую черту, и

 total; 

здесь, конечно, должен быть прирост?

В конце PHP вы можете использовать urlencode(json_encode($obj)) для преобразования объекта в строку, которая может использоваться в URL-адресе.

После того, как я опубликовал это, я понял, что вы пытаетесь преобразовать переменную JavaScript в строку URL после того, как я увидел var foo = { . Duh.