2009-05-26 17 views
25

का उपयोग कर कैसे jQuery ajax पोस्टकैसे jQuery ajax पोस्ट

का उपयोग कर इस ajax समारोह

function submit_form(){ 
$.post("ajax.php", { 
selectedcheckboxes:user_ids, 
confirm:"true" 
}, 
function(data){ 
    $("#lightbox").html(data); 
    }); 
} 

है से अधिक चेकबॉक्स पारित करने के लिए एक से अधिक चेकबॉक्स पारित करने के लिए और यह मेरा रूप

<form> 
<input type='checkbox' name='user_ids[]' value='1'id='checkbox_1' /> 
<input type='checkbox' name='user_ids[]' value='2'id='checkbox_2' /> 
<input type='checkbox' name='user_ids[]' value='3'id='checkbox_3' /> 
<input name="confirm" type="button" value="confirm" onclick="submit_form();" /> 
</form> 

उत्तर

46

से है POST के लिए jquery दस्तावेज़ (3rd example):

$.post("test.php", { 'choices[]': ["Jon", "Susan"] }); 

तो मैं बस चेक किए गए बक्से पर फिर से घुमाएगा और सरणी का निर्माण करूंगा। जैसे

var data = { 'user_ids[]' : []}; 
$(":checked").each(function() { 
    data['user_ids[]'].push($(this).val()); 
}); 
$.post("ajax.php", data); 
+0

मदद – ahmed

+0

मदद के लिए धन्यवाद मैं अभी भी इसे पोस्ट करने में असमर्थ हूं .. यह ऑब्जेक्ट ऑब्जेक्ट देता है अगर मैं खिड़की करता हूं। डेटा के लिए चेतावनी ... समस्या कहां हो सकती है ?? – mkamthan

+0

यह डेटा नहीं होना चाहिए .user_ids.push ($ (यह) .val()); ? –

2

आप अपने खुद के समाधान रोलिंग पर सेट नहीं कर रहे हैं, इस jQuery प्लगइन की जाँच कुछ:

malsup.com/jquery/form/

यह करना होगा कि और अधिक के लिए आप। इसकी अत्यधिक अनुशंसा की जाती है।

9

निम्नलिखित का उपयोग कर सकते हैं और फिर परिणामों की एक श्रृंखला देने के लिए पोस्ट परिणाम explode(",", $_POST['data']); विस्फोट कर सकते हैं।

var data = new Array(); 
$("input[name='checkBoxesName']:checked").each(function(i) { 
    data.push($(this).val()); 
}); 
+0

"इनपुट [name = 'checkBoxesName'] में: चेकबॉक्स नाम के नाम पर" [डालना न भूलें "[]" चेक करें: इस तरह: "इनपुट [name = 'checkBoxesName []']: चेक किया गया" – Zanoldor

14

बस एक ही समस्या के लिए समाधान खोजने की कोशिश कर रहा है। पॉल के समाधान को लागू करने के लिए मैंने इस कार्य को ठीक से करने के लिए कुछ बदलाव किए हैं।

var data = { 'venue[]' : []}; 

$("input:checked").each(function() { 
    data['venue[]'].push($(this).val()); 
}); 

कम इनपुट के अलावा: के रूप में करने का विरोध किया जाँच: बस प्रपत्र पर चेक बॉक्स को सरणी में सीमा जाँच क्षेत्रों इनपुट। पॉल this के साथ वास्तव में सही है $(this)

6

यहां एक और अधिक लचीला तरीका है।

मान लें कि यह आपका फॉर्म है।

<form> 
<input type='checkbox' name='user_ids[]' value='1'id='checkbox_1' /> 
<input type='checkbox' name='user_ids[]' value='2'id='checkbox_2' /> 
<input type='checkbox' name='user_ids[]' value='3'id='checkbox_3' /> 
<input name="confirm" type="button" value="confirm" onclick="submit_form();" /> 
</form> 

और यह नीचे अपनी jQuery ajax है ...

और अपने ajax.php में, आप गूंज या अपनी पोस्ट print_r देखने के लिए इसके अंदर क्या हो रहा है की कोशिश करें। यह इस तरह दिखना चाहिए। आपके द्वारा चेक किए गए केवल चेकबॉक्स ही लौटाए जाएंगे। अगर आपने कोई चेक नहीं किया है, तो यह एक त्रुटि लौटाएगा।

<?php 
    print_r($_POST); // this will be echoed back to you upon success. 
    echo "This one too, will be echoed back to you"; 

आशा है कि यह पर्याप्त स्पष्ट है।

0

यह बेहतर और आसान

var arr = $('input[name="user_ids[]"]').map(function(){ 
    return $(this).val(); 
}).get(); 

console.log(arr); 
1

निम्नलिखित से पॉल Tarjan मेरे लिए काम किया होगा,

var data = { 'user_ids[]' : []}; 
$(":checked").each(function() { 
    data['user_ids[]'].push($(this).val()); 
}); 
$.post("ajax.php", data); 

लेकिन मैं अपने पेज पर कई रूपों था और यह खींच लिया सब से इन बॉक्स को चेक रूपों, इसलिए मैंने निम्नलिखित संशोधन किया ताकि इसे केवल एक रूप से खींचा जा सके,

var data = { 'user_ids[]' : []}; 
$('#name_of_your_form input[name="user_ids[]"]:checked').each(function() { 
    data['user_ids[]'].push($(this).val()); 
}); 
$.post("ajax.php", data); 

बस अपने फॉर्म के नाम पर name_of_your_form बदलें।

मैं यह भी उल्लेख करूंगा कि यदि कोई उपयोगकर्ता किसी भी बॉक्स को चेक नहीं करता है तो PHP में कोई सरणी जारी नहीं होता है। मैं एक उपयोगकर्ता सभी बक्से अनचेक होने पर पता करने के लिए की जरूरत है, तो मैं

<input style="display:none;" type="checkbox" name="user_ids[]" value="none" checked="checked"></input> 

प्रपत्र के लिए निम्न कहा, इस तरह अगर कोई इन बॉक्स को चेक कर रहे हैं, यह अभी भी "कोई नहीं" के एक मूल्य के साथ सरणी सेट हो जाएगा।

संबंधित मुद्दे