Reputation: 1529
function getParameterByName(name, str) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(str);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
I'm using this algorithm for getting the value from the string, found it in internet
my string is
mihpayid=403993715510554486&mode=CC&status=success&unmappedstatus=captured&key=JBZaLc&txnid=t39SfgBZFEFLwhxEC&amount=1000.0&addedon=2014-12-06+17%3A34%3A26&productinfo=Devthon&firstname=sasi.kanth80%40gmail.c&lastname=&address1=&address2=&city=&state=&country=&zipcode=&email=sasi.kanth80%40gmail.com
I'm able to get all the parameters like status
key
But I'm unable to get the mihpayid
value which is the first parameter
How can I get that any suggestion?
getParameterByName("success", data);
Upvotes: 0
Views: 484
Reputation: 951
I think your solution is really close, it's just missing a couple of things. One not sure if it is a typo or not but the line var regex = new RegExp("[\\?&]" + name + "=([^&#]*)");
ends in a comma. Outside of this the only thing you needed to do is update the following [\\?&]
to [\\?&]?
function getParameterByName(name, str) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]?" + name + "=([^&#]*)");
results = regex.exec(str);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
data="mihpayid=403993715510554486&mode=CC&status=success&unmappedstatus=captured&key=JBZaLc&txnid=t39SfgBZFEFLwhxEC&amount=1000.0&addedon=2014-12-06+17%3A34%3A26&productinfo=Devthon&firstname=sasi.kanth80%40gmail.c&lastname=&address1=&address2=&city=&state=&country=&zipcode=&email=sasi.kanth80%40gmail.com";
console.clear();
console.log(getParameterByName("unmappedstatus", data));
console.log(getParameterByName("status", data));
console.log(getParameterByName("mihpayid", data));
Results in Console:
regex:10 Console was cleared
regex:11 captured
regex:12 success
regex:13 403993715510554486
regex:1 undefined
Upvotes: 1
Reputation: 416
A regular expression like /([a-zA-Z0-9]*)=([^&]*)/ig
will return all matches with the variable and value conveniently sorted.
Upvotes: 1
Reputation: 59232
You can make use of this function which will form a flattened array looking like
[key,value, anotherkey,anothervalue,...]
so we could just find the value by adding one to the index of key.
function getParameterByName(name, str) {
var arr = str.split('&').map(function(s){
return s.split('=')
}).join().split(","); // flatten the array
return decodeURIComponent(arr[arr.indexOf(name) + 1]);
}
Upvotes: 1