[英]pass different types of variable with ajax call
我將使用ajax調用的單擊按鈕將多個復選框和文本框的值發布到php頁面。 在html中,我有:
<input type="text" name="field1" id="field1" />
<input type="text" name="field2" id="field2" />
<input type="checkbox" name="params[]" id="params" class="params" value="Value1">Value1<br>
<input type="checkbox" name="params[]" id="params" class="params" value="Value2">Value2<br>
<input type="button" value="get parameters" id="getparams" name="getparams"/><p>
<div id="response"></div>
在jscript中,我有:
$(document).ready(function(){
$("#getparams").click(function(){
var field1 = $("#field1").val();
var field2 = $("#field2").val();
var params = {'params[]' : []};
$(":checked").each(function() {
params['params[]'].push($(this).val());
});
var datastr = '&field1=' + field1 + '&field2=' + field2 + '¶ms=' + params;
$.ajax({
type: "POST",
url: "page.php",
data: datastr,
cache: false,
success: function(html){
$("#response").fadeIn("slow");
$("#response").html(html);
}
});
return false;
});
});
因此,我將復選框值壓入數組(參數),將文本框值壓入單獨的變量(field1,field2)。 在php中,我可以訪問field1,field2
但不能訪問數組params
。
echo $_POST['field1'];// I can access..
echo $_POST['params']; // I get [object Object] response
這里有什么問題 ?
您的params數組(視為對象)需要先進行序列化,然后才能將其添加到datastr變量中。
一種更簡單的方法是使用.submit函數,它將為您完成所有繁重的工作: http ://api.jquery.com/submit/
我無法使用serialize
方法解決此問題,但是以下方法可以正常工作。 如果我用以下方法重寫html復選框:
<input type="checkbox" name="params" class="parameters" value="Value1">Value1<br>
<input type="checkbox" name="params" class="parameters" value="Value2">Value2<br>
要確定在jQuery中檢查了哪些輸入元素,我可以使用:
var params='';
$('.parameters:checked').each(function(){
params=params+','+$(this).val();
});
代替:
var params = {'params[]' : []};
$(":checked").each(function() {
params['params[]'].push($(this).val());
})
在php中,如果我使用$_POST['params']
我會得到類似,value1,value2
,然后可以用substr($_POST['params'],1)
進行修剪,或者如果我想獲取數組,可以使用explode(',',$_POST['params']);
然后使用array_slice($params,1)
刪除第一個為空的元素
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.