#jquery #jquery-post #jquery-get
#jquery — запрос #jquery-опубликовать #jquery-получить #jquery #jquery-post
Вопрос:
Есть ли какой-нибудь способ проверить с помощью jQuery наличие POST в URL-адресе аналогично PHP-способу?
Версия PHP:
if(!empty($_GET)) { // do stuff }
Извините. Я имею в виду ПОЛУЧИТЬ, а не ОПУБЛИКОВАТЬ.
Я ищу, чтобы получить URL-адрес при загрузке страницы $(document).ready( function() { // here });
Пример URL: http://www.domain.com?a=1
И чем дальше value of the var a
в функцию OnLoad();
Комментарии:
1. Вы знаете, что $_POST не передается в URL. Верно?
2. Вы имеете в виду, что хотите получить параметры URL-адреса в javascript / jQuery?
3. ДА. Извините. Я имею в виду GET, а не POST.
4. когда вы хотите проверить? когда выполняется запрос или во время ответа?
5. можете ли вы описать, что вы хотите .. usig jquery api и т.д. и какой o / p вы ожидаете
Ответ №1:
расширьте jquery, чтобы получить переменные URL
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') 1).split('amp;');
for(var i = 0; i < hashes.length; i )
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});
затем вы можете вызвать
if($.getUrlVars().length > 0){ // do something }
вы также можете запросить определенное значение с помощью
if($.getUrlVar('name') == 'frank'){
Комментарии:
1. ваш пример отлично работает. Как насчет передачи
$.getUrlVar('name')
значения вOnLoad
функцию?2. если вы добавите строку $(document). ready(функция() { methodForDoingCoolStuffForFrank($.getUrlVar(‘name’)); /* метод, который будет вызываться из onload */ }); Затем он вызывается, когда страница будет готова и сможет что-то сделать на основе значения name.
Ответ №2:
Если вы хотите получить параметры строки запроса с помощью jQuery, я предлагаю вам использовать следующий код — он сохраняет параметры в глобальной переменной (сигнал жалобы !), А затем анализирует строку запроса в эту переменную:
var urlParams = {};
(function () {
var e,
a = / /g, // Regex for replacing addition symbol with a space
r = /([^amp;=] )=?([^amp;]*)/g,
d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
q = window.location.search.substring(1);
while (e = r.exec(q))
urlParams[d(e[1])] = d(e[2]);
})();
Пример использования :
URL = http://www.mywebsite.com/open?abc=123amp;def=234
alert(urlParams["abc"]);
отобразит предупреждение со значением «123»;
Комментарии:
1. Выглядит сложно. Возвращает ли он urlParams в виде массива? В моем случае будет только один параметр.
2. Это не сложно — это разделение строки запроса — я обновил ответ, чтобы дать вам пример использования.
3. использование простое. Но сам метод выборки выглядит очень сложным — не мой уровень оплаты! 🙂
Ответ №3:
Новый ответ
Просто используйте JavaScript, чтобы проверить, есть ли строка запроса или нет.
if(location.search.length > 0)
alert('Horay horah!');
Если вам нужно получить фактические данные в строке запроса, вы можете использовать плагин jQuery для объекта строки запроса или выполнить синтаксический анализ location.search
текста.
Ответ №4:
Нет. Данные POST недоступны для JavaScript.
Вам нужно было бы выполнить проверку в PHP и вывести некоторый JavaScript, устанавливающий переменную, чтобы сообщить ему о результате.
например
if(!empty($_POST))
echo "<script type='text/javascript'> post_not_empty = true; </script>";
Ответ №5:
Плагин jquery для этого:
/*
jQuery Url Plugin
* Version 1.0
* 2009-03-22 19:30:05
* URL: http://ajaxcssblog.com/jquery/url-read-get-variables/
* Description: jQuery Url Plugin gives the ability to read GET parameters from the actual URL
* Author: Matthias Jäggli
* Copyright: Copyright (c) 2009 Matthias Jäggli
* Licence: dual, MIT/GPLv2
*/
(function ($) {
$.url = {};
$.extend($.url, {
_params: {},
init: function () {
var paramsRaw = "";
try {
paramsRaw =
(document.location.href.split("?", 2)[1] || "").split("#")[0].split("amp;") || [];
for (var i = 0; i < paramsRaw.length; i ) {
var single = paramsRaw[i].split("=");
if (single[0])
this._params[single[0]] = unescape(single[1]);
}
}
catch (e) {
alert(e);
}
},
param: function (name) {
return this._params[name] || "";
},
paramAll: function () {
return this._params;
}
});
$.url.init();
})(jQuery);
использование: $.param("key")
в вашем примере $.param('a')