通过ajax发送许多post参数的最佳方法是什么

时间:2013-12-27 14:44:05

标签: php jquery ajax

我一直想知道通过Ajax jQuery发送这么多参数的最佳方法是什么。

我知道如何通过ajax发送少量帖子参数,就像这样:

$.ajax({
    type: "POST",
    url: 'controller/function',
    data: {
        param1 : param1, 
        param2 : param2
    },
    success: function (result) {

    }
});

我一直想知道如果我发送50或更高的参数怎么办。让我们说吧,

$.ajax({
    type: "POST",
    url: 'controller/function',
    data: {param1 : param1, param2 : param2, ......., param50 : param50},
    success: function (result) {

    }
});

现在,如果您问我为什么需要这个,那是因为我需要发布不同的独立参数。离开这个要求,我只是想知道这是否正常,或者在服务器端或客户端方面是否有任何不良影响?

问题2,在Ajax调用中发送许多参数时,建议的最佳方法是什么。让我们说我有50"不同"我应该发布的长串。

有什么建议吗?

更新:

顺便说一句,我没有使用表格。我发送不同的长HTML字符串,我不通过表单发送它们。我只是通过像

这样的jquery抓住它们
 var param1 = $(".divwrapper1").html(); 
 var param2 = $(".divwrapper2").html();
 ..... and so on and so for 

并使用这些变量并通过ajax

发送

2 个答案:

答案 0 :(得分:1)

我假设您提交的是大型表格。在这种情况下,您最好将序列化表单数据。检查此过程中发生的情况的一种好方法如下:

$( "form" ).on( "submit", function( event ) {
  event.preventDefault();
  console.log( $( this ).serialize() );
});

看看=> http://api.jquery.com/serialize/了解更多信息。

答案 1 :(得分:0)

你正在以正确的方式做到这一点!但是在ajax调用之外构建你的post参数并将它们序列化更好,这样它们只能在一个post参数中发送到服务器。如果不序列化数据,则所有参数将作为不同的后置变量发送。

var mydata={
    param1 : param1, 
    param2 : param2,
    param3 : param3, 
    param50 : param50
};

var myjson=JSON.stringify(mydata);


$.ajax({
    type: "POST",
    url: 'controller/function',
    data: {alldata: myjson}, //OR you could do: data: mydata,
    success: function (result) {

    }
});

在服务器端,您可以通过

接收您发布的数据(在本例中为json)
$posteddata=$_POST['alldata'];//posteddata now contains the data as a string (json)

现在你需要解码收到的json字符串,使其成为合适的PHP类型

$data= json_decode($posteddata);