code_junkie

How to build query string with Javascript

Nov 12th, 2011
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. function form_params( form )
  2. {
  3. var params = new Array()
  4. var length = form.elements.length
  5. for( var i = 0; i < length; i++ )
  6. {
  7. element = form.elements[i]
  8.  
  9. if(element.tagName == 'TEXTAREA' )
  10. {
  11. params[element.name] = element.value
  12. }
  13. else if( element.tagName == 'INPUT' )
  14. {
  15. if( element.type == 'text' || element.type == 'hidden' || element.type == 'password')
  16. {
  17. params[element.name] = element.value
  18. }
  19. else if( element.type == 'radio' && element.checked )
  20. {
  21. if( !element.value )
  22. params[element.name] = "on"
  23. else
  24. params[element.name] = element.value
  25.  
  26. }
  27. else if( element.type == 'checkbox' && element.checked )
  28. {
  29. if( !element.value )
  30. params[element.name] = "on"
  31. else
  32. params[element.name] = element.value
  33. }
  34. }
  35. }
  36. return params;
  37. }
  38.  
  39. function serialize(form) {
  40. if (!form || !form.elements) return;
  41.  
  42. var serial = [], i, j, first;
  43. var add = function (name, value) {
  44. serial.push(encodeURIComponent(name) + '=' + encodeURIComponent(value));
  45. }
  46.  
  47. var elems = form.elements;
  48. for (i = 0; i < elems.length; i += 1, first = false) {
  49. if (elems[i].name.length > 0) { /* don't include unnamed elements */
  50. switch (elems[i].type) {
  51. case 'select-one': first = true;
  52. case 'select-multiple':
  53. for (j = 0; j < elems[i].options.length; j += 1)
  54. if (elems[i].options[j].selected) {
  55. add(elems[i].name, elems[i].options[j].value);
  56. if (first) break; /* stop searching for select-one */
  57. }
  58. break;
  59. case 'checkbox':
  60. case 'radio': if (!elems[i].checked) break; /* else continue */
  61. default: add(elems[i].name, elems[i].value); break;
  62. }
  63. }
  64. }
  65.  
  66. return serial.join('&');
  67. }
  68.  
  69. function buildUrl(url, parameters){
  70. var qs = "";
  71. for(var key in parameters) {
  72. var value = parameters[key];
  73. qs += encodeURIComponent(key) + "=" + encodeURIComponent(value) + "&";
  74. }
  75. if (qs.length > 0){
  76. qs = qs.substring(0, qs.length-1); //chop off last "&"
  77. url = url + "?" + qs;
  78. }
  79. return url;
  80. }
  81.  
  82. //example:
  83. var url = "http://www.site.com/";
  84. var parameters = new Array();
  85. parameters["name"] = "George Washington";
  86. parameters["dob"] = "17320222";
  87. alert(buildUrl(url, parameters));
  88. //displays: http://www.site.com/?name=George%20Washington&dob=17320222
  89.  
  90. var foo = document.createElement("elementnamehere");
  91. foo.attribute = allUserSpecifiedDataConsideredDangerousHere;
  92. somenode.appendChild(foo);
  93.  
  94. document.write("<elementnamehere attribute=""
  95. + ilovebrokenwebsites
  96. + "">"
  97. + stringdata
  98. + "</elementnamehere>");
  99.  
  100. Object.toQueryString({ action: 'ship', order_id: 123, fees: ['f1', 'f2'], 'label': 'a demo' })
  101.  
  102. // -> 'action=ship&order_id=123&fees=f1&fees=f2&label=a%20demo'
Add Comment
Please, Sign In to add comment