2011-11-04 90 views
2

有没有什么方法可以在类似于PHP方式的URL内使用jQuery for POST进行检查?jQuery - 在URL中检查POST

PHP版本:

if(!empty($_GET)) { // do stuff } 

对不起。我的意思是GET不是POST。

我期待在页面加载$(document).ready(function() { // here });

示例URL抓取网址:http://www.domain.com?a=1

而且比过去value of the var a到函数OnLoad();

+0

您知道$ _POST未在URL中传递。对? – MarioRicalde

+0

你的意思是你想要在javascript/jQuery中获取URL的参数吗? – ManseUK

+0

是的。抱歉。我的意思是GET不POST。 – Iladarsda

回答

3

扩展jQuery来获得url瓦尔

$.extend({ 
    getUrlVars: function(){ 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    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'){ 
+0

你的例子很好。将'$ .getUrlVar('name')'值传递给'OnLoad'函数怎么样? – Iladarsda

+0

如果您添加行 $(document).ready(function(){ methodForDoingCoolStuffForFrank($。getUrlVar('name'));/*将从onload调用的方法*/ }); 然后,当页面准备就绪时,它将被调用,并且将能够根据名称值进行操作。 – kamui

1

号POST数据不给JavaScript访问。

你将不得不在PHP中进行检查,并输出一些JavaScript设置变量,让它知道结果。

例如

if(!empty($_POST)) 
    echo "<script type='text/javascript'> post_not_empty = true; </script>"; 
+0

从URL http://www.domain.com?a = 1&b = 2'获取数据怎么办? – Iladarsda

2

新建答案

只需使用JavaScript来检查,如果一个查询字符串存在与否。

if(location.search.length > 0) 
    alert('Horay horah!'); 

如果需要查询字符串中获取的实际数据,你可以使用Query String Object jQuery插件,或者你去解析location.search文本。

2

如果你想使用JQuery获取QueryString参数,我建议你使用下面的代码 - 它将参数存储在一个全局变量中(提示投诉!),然后解析该查询字符串成变量:

var urlParams = {}; 
(function() { 
    var e, 
     a = /\+/g, // Regex for replacing addition symbol with a space 
     r = /([^&=]+)=?([^&]*)/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=123&def=234

alert(urlParams["abc"]);

将显示一个警报,值 “123”;

+0

看起来很复杂。它是否将urlParams作为数组返回?在我的情况下,只会有一个参数。 – Iladarsda

+0

它并不复杂 - 它查询字符串的分裂 - 我已经更新了答案给你一个用法示例。 – ManseUK

+0

用法很简单。但是自己看起来很复杂 - 不是我的薪水等级! :) – Iladarsda

1

查询特定值一个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("&") || []; 
       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')