I am sending a form to an external server I have limited access to. I have a form with many check-boxes for different products the user is interested in. I need to send these in a single string that lists all the products they checked.
I know I need to use JavaScript to capture the selections and bine them into one variable and then send it through POST to the external server. I'm not very experienced in Javascript to know how exactly.
I am sending a form to an external server I have limited access to. I have a form with many check-boxes for different products the user is interested in. I need to send these in a single string that lists all the products they checked.
I know I need to use JavaScript to capture the selections and bine them into one variable and then send it through POST to the external server. I'm not very experienced in Javascript to know how exactly.
Share Improve this question edited Jul 29, 2013 at 23:28 Ryan Haining 36.9k16 gold badges123 silver badges180 bronze badges asked Jul 29, 2013 at 23:21 Brian BarrusBrian Barrus 5153 gold badges7 silver badges20 bronze badges 2- What format does the server expect the data? Just one string of name-value pairs, or is it in JSON format as amsterdam discusses below? – user2625787 Commented Jul 29, 2013 at 23:35
- Actually I am sending it to a SalesForce server so I just need the input names of the checked checkboxes in a ma separated string: "Product A, Product D, Product F". Also, I've never used JSON to POST a form. – Brian Barrus Commented Jul 29, 2013 at 23:52
2 Answers
Reset to default 3I'm just going to give you a hint on how to catch up the checked checkboxes once the form is submitted (DEMO).
Imagine you have the following html:
<form id="testForm">
<input class="checkbox" name="one" type="checkbox">
<input class="checkbox" name="two" type="checkbox">
<input class="checkbox" name="three" type="checkbox">
<input type="hidden" name="checkboxStr" id="checkbox_str">
<button>Send</button>
</form>
You can add an event listener to form submission:
var form = document.getElementById('testForm');
try {
form.addEventListener("submit", submitFn, false);
} catch(e) {
form.attachEvent("onsubmit", submitFn); //IE8
}
And then you can get all the needed checkboxes with for example its class name. Loop trough them and add the checked ones to an array which you later on join to a string.
function submitFn(event) {
event.preventDefault();
var boxes = document.getElementsByClassName('checkbox');
var checked = [];
for(var i=0; boxes[i]; ++i){
if(boxes[i].checked){
checked.push(boxes[i].name);
}
}
var checkedStr = checked.join();
document.getElementById('checkbox_str').value = checkedStr;
form.submit();
return false;
}
You can now send this string via ajax or you can add a hidden form field and set the string as its value and submit the form without ajax.
First you need to grab the name value pairs and store them to an object as such:
var obj = {}; // this will hold your name value pairs
From there you can use JSON to send the data to the server. JSON data is in string form when it is sent to the server.
var json_string = JSON.stringify(obj);
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744246668a4564965.html
评论列表(0条)