Tôi đang cố chuyển dữ liệu từ trang này sang trang khác.Cách đọc dữ liệu GET từ URL bằng JavaScript?
www.mints.com?name=something
Làm thế nào để đọc name
sử dụng JavaScript?
Tôi đang cố chuyển dữ liệu từ trang này sang trang khác.Cách đọc dữ liệu GET từ URL bằng JavaScript?
www.mints.com?name=something
Làm thế nào để đọc name
sử dụng JavaScript?
function parseURLParams(url) {
var queryStart = url.indexOf("?") + 1,
queryEnd = url.indexOf("#") + 1 || url.length + 1,
query = url.slice(queryStart, queryEnd - 1),
pairs = query.replace(/\+/g, " ").split("&"),
parms = {}, i, n, v, nv;
if (query === url || query === "") return;
for (i = 0; i < pairs.length; i++) {
nv = pairs[i].split("=", 2);
n = decodeURIComponent(nv[0]);
v = decodeURIComponent(nv[1]);
if (!parms.hasOwnProperty(n)) parms[n] = [];
parms[n].push(nv.length === 2 ? v : null);
}
return parms;
}
Sử dụng như sau:
var urlString = "http://www.foo.com/bar?a=a+a&b%20b=b&c=1&c=2&d#hash";
urlParams = parseURLParams(urlString);
mà trả về một một đối tượng như thế này:
{
"a" : ["a a"], /* param values are always returned as arrays */
"b b": ["b"], /* param names can have special chars as well */
"c" : ["1", "2"] /* an URL param can occur multiple times! */
"d" : [null] /* parameters without values are set to null */
}
Vì vậy
parseURLParams("www.mints.com?name=something")
cho
{name: ["something"]}
EDIT: Các original version of this answer sử dụng một cách tiếp cận regex dựa trên URL phân tích cú pháp. Nó sử dụng một hàm ngắn hơn, nhưng cách tiếp cận này là thiếu sót và tôi đã thay thế nó bằng một trình phân tích cú pháp thích hợp.
location.search https://developer.mozilla.org/en/DOM/window.location
mặc dù hầu hết sử dụng một số loại thói quen phân tích cú pháp để đọc thông số chuỗi truy vấn.
đây là một http://safalra.com/web-design/javascript/parsing-query-strings/
Đây là một giải pháp. Tất nhiên, chức năng này không cần tải vào tùy chọn "window.params" - có thể được tùy chỉnh.
window.params = function(){
var params = {};
var param_array = window.location.href.split('?')[1].split('&');
for(var i in param_array){
x = param_array[i].split('=');
params[x[0]] = x[1];
}
return params;
}();
Ví dụ cuộc gọi API trên http://www.mints.com/myurl.html?name=something&goal=true:
if(window.params.name == 'something') doStuff();
else if(window.params.goal == 'true') shoutGOOOOOAAALLL();
Tôi nghĩ rằng đây cũng nên làm việc:
function $_GET(q,s) {
s = (s) ? s : window.location.search;
var re = new RegExp('&'+q+'=([^&]*)','i');
return (s=s.replace(/^\?/,'&').match(re)) ?s=s[1] :s='';
}
Chỉ cần gọi nó như thế này:
var value = $_GET('myvariable');
Iv'e câu trả lời của Tomalak cố định/cải tiến với:
location.search
thay vì url.Code:
function getSearchObject() {
if (location.search === "") return {};
var o = {},
nvPairs = location.search.substr(1).replace(/\+/g, " ").split("&");
nvPairs.forEach(function (pair) {
var e = pair.indexOf('=');
var n = decodeURIComponent(e < 0 ? pair : pair.substr(0,e)),
v = (e < 0 || e + 1 == pair.length)
? null :
decodeURIComponent(pair.substr(e + 1,pair.length - e));
if (!(n in o))
o[n] = v;
else if (o[n] instanceof Array)
o[n].push(v);
else
o[n] = [o[n] , v];
});
return o;
}
Tôi cũng điên một chức năng khá đơn giản. Bạn gọi bằng cách: get ("yourgetname");
và nhận bất kỳ thứ gì. (bây giờ mà tôi đã viết nó tôi nhận thấy nó sẽ cung cấp cho bạn 26% nếu bạn đã có một & về giá trị của bạn ..)
function get(name){
var url = window.location.search;
var num = url.search(name);
var namel = name.length;
var frontlength = namel+num+1; //length of everything before the value
var front = url.substring(0, frontlength);
url = url.replace(front, "");
num = url.search("&");
if(num>=0) return url.substr(0,num);
if(num<0) return url;
}
Câu trả lời hiện đang được chọn không làm việc tốt ở tất cả các trường hợp của tôi, mà tôi cảm thấy là một hình ảnh khá điển hình. Tôi tìm thấy chức năng dưới đây here và nó hoạt động tuyệt vời!
function getAllUrlParams(url) {
// get query string from url (optional) or window
var queryString = url ? url.split('?')[1] : window.location.search.slice(1);
// we'll store the parameters here
var obj = {};
// if query string exists
if (queryString) {
// stuff after # is not part of query string, so get rid of it
queryString = queryString.split('#')[0];
// split our query string into its component parts
var arr = queryString.split('&');
for (var i=0; i<arr.length; i++) {
// separate the keys and the values
var a = arr[i].split('=');
// in case params look like: list[]=thing1&list[]=thing2
var paramNum = undefined;
var paramName = a[0].replace(/\[\d*\]/, function(v) {
paramNum = v.slice(1,-1);
return '';
});
// set parameter value (use 'true' if empty)
var paramValue = typeof(a[1])==='undefined' ? true : a[1];
// (optional) keep case consistent
paramName = paramName.toLowerCase();
paramValue = paramValue.toLowerCase();
// if parameter name already exists
if (obj[paramName]) {
// convert value to array (if still string)
if (typeof obj[paramName] === 'string') {
obj[paramName] = [obj[paramName]];
}
// if no array index number specified...
if (typeof paramNum === 'undefined') {
// put the value on the end of the array
obj[paramName].push(paramValue);
}
// if array index number specified...
else {
// put the value at that index number
obj[paramName][paramNum] = paramValue;
}
}
// if param name doesn't exist yet, set it
else {
obj[paramName] = paramValue;
}
}
}
return obj;
}
giống tại đây, trang này hoạt động giống như nét duyên dáng – Plastic
Lời xin lỗi của tôi, tôi không phải là chuyên gia biên tập chuyên nghiệp! :) –
@Tomalak bạn có thể cho tôi biết cách in giá trị của tên không? tôi đang cố gắng sử dụng tập lệnh này và khi tôi sử dụng document.write (urlParams); nó mang lại cho tôi [đối tượng] nhưng tôi không nhận được giá trị thực tế .. Bạn có thể giúp tôi với điều này không? –
@KiranVemuri: Hãy thử 'console.log (JSON.stringify (urlParams))' – Daenarys