jQuery — проверка наличия записи в URL

#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')