簡體   English   中英

通過ajax調用傳遞不同類型的變量

[英]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 + '&params=' + 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM