【问题标题】:Passing values to server [duplicate]将值传递给服务器[重复]
【发布时间】:2015-02-28 10:22:21
【问题描述】:

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

  1. 我有未知数量的变量(我正在处理的程序根据用户的操作将不同数量的变量/数组传递到服务器端)
  2. 用户可以使用任何字符,包括&=,因此如果我将变量作为多个/一个GET 变量传递,用户可以传递=&,这将影响GET变量

我正在寻找将变量(最好是数组)传递到服务器端(如 PHP)的方法(一种解决方案)

感谢您的时间和帮助:)

【问题讨论】:

  • 对于#2,这就是URL encoding 的用途。 = 变为 %3D& 变为 %26
  • PHP session variables 在你的设计思维中扮演什么角色(如果有的话)?

标签: javascript php jquery serverside-javascript


【解决方案1】:

对于您的问题,有多种可能的解决方案,因为

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

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

2.) 您指定的字符会自动存储在 JSON 注释中。不用管他们。

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

【讨论】:

    【解决方案2】:

    要将数组传递给服务器,您可以这样做(注意名称中的[],这表示一个数组):

    <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>";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多