2011-11-04 54 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')