将值传递给服务器

时间:2015-01-02 00:52:28

标签: javascript php jquery serverside-javascript

我一直在尝试寻找将变量从客户端传递到服务器的方法 让我难以接受的是:

  1. 我有一个未知数量的变量(我正在处理的程序将不同数量的变量/数组传递给服务器端,具体取决于用户的行为)
  2. 用户可能正在使用任何字符,包括&=因此,如果我将变量作为多个/一个GET变量/ s传递,则用户可以传递=和{{1} }这将影响&变量
  3. 我正在寻找将变量(最好是数组)传递给服务器端(如PHP)的方法(解决方案)

    感谢您的时间和帮助:)

2 个答案:

答案 0 :(得分:0)

要将数组传递给服务器,您可以执行以下操作(请注意名称中的[],这表示数组):

<input type="checkbox" name="myCheckBox[]" value="One" />
<input type="checkbox" name="myCheckBox[]" value="Two" />
<input type="checkbox" name="myCheckBox[]" value="Three" />
<input type="checkbox" name="myCheckBox[]" value="Four" />

然后在php中你会做这样的事情:

foreach($_POST['myCheckBox'] as $value){
    echo "<p>$value</p>";
}

然后您将获得看起来像这样的输出(假设除Two之外的所有输出都已选中):

One
Three
Four

因此,假设您没有使用javascript传递数据,浏览器应自动对数据进行编码。如果您使用的是javascript,则可以将数据传递给javascript函数escape(),它将转义/编码要传递给服务器的数据。

同样对于jquery,您可以使用serialize()操作:

$.ajax(
     url: "/to/file.php",
     data: $("#my_form").serialize(), // <form id="my_form">
     success: function(){
         // Do some stuff
     }
);

这是另一种传递数据的方法:

<input type="text" name="names[0]['name']['first']" />
<input type="text" name="names[0]['name']['last']" />
<input type="radio" name="names[0]['gender']" value="male" />
<input type="radio" name="names[0]['gender']" value="female" />

<input type="text" name="names[1]['name']['first']" />
<input type="text" name="names[1]['name']['first']" />
<input type="radio" name="names[1]['gender']" value="male" />
<input type="radio" name="names[1]['gender']" value="female" />

<input type="text" name="names[2]['name']['first']" />
<input type="text" name="names[2]['name']['first']" />
<input type="radio" name="names[2]['gender']" value="male" />
<input type="radio" name="names[2]['gender']" value="female" />

<input type="text" name="names[3]['name']['first']" />
<input type="text" name="names[3]['name']['first']" />
<input type="radio" name="names[3]['gender']" value="male" />
<input type="radio" name="names[3]['gender']" value="female" />

在php中你可以这样做:

foreach($_POST['names'] as $name){
    echo "<p>" . $name["name"]["first"] . " is a " . $name["gender"] . "</p>";
}

答案 1 :(得分:0)

对于你的问题,可能存在多种灵魂,

1。)我建议以JSON加密格式传递变量。当然,您需要生成一个包含您要发送的所有变量的数组,然后使用javascript函数JSON.stringify(yourArray)对其进行编码。之后,您可以使用AJAX将数据发送到服务器。

如果您想要一个仅限表格(因此没有javascript)解决方案,请考虑对多种输入类型使用HTML 5命名注释,例如: name="yourForm[]"

2.。)您指定的字符将自动存储在JSON注释中。无需关心他们。

在服务器上,您只需使用json_decode($yourArray, true);将字符串转换回数组。注意用于输出数组而不是对象的真实标志。