【问题标题】:Pass PHP Array via jQuery Ajax通过 jQuery Ajax 传递 PHP 数组
【发布时间】:2009-08-02 18:22:55
【问题描述】:

我有一个 php 数组:

$toField = explode(",", $ids);  //Which looks something like '24,25,26,29'

我想通过 jQuery AJAX 传递这个数组,用这个:

<form id="myForm">
  <input type="hidden"  value="'.$toField.'">
  <input type="submit" id="sendMessage" class="faceboxSubmit" name="ok" value="Send Reply"/>
</form>

这是我的 jQuery:

$("#sendMessage").click(function(event){
    event.preventDefault();
    var senderID = <?php echo $usrID; ?>;
    var receiverID = $("#toField").val();
    $.ajax( 
{ 
    type: "POST", 
    url: "replyMessage.php", 
    data: "senderID=" + senderID + "&subject=" + subject + "&message=" + message + "&receiverID=" + receiverID + "&threadID=" + thread_id,
    beforeSend: function() {
        $("#sendingMessage").show();
        },
            success: function() {
        alert("Success");
        }

         });    
    }); 

如何传递数组,以便通过“replyMessage.php”页面,我可以从数组中获取每个 ID,执行以下操作:

    <?php 

    foreach ($_POST['receiverID'] as $receiverID) 
   { 
     mysql_query //etc...
   } 

非常感谢任何帮助!

【问题讨论】:

    标签: php mysql arrays


    【解决方案1】:
    <form id='myform'>
     <input type='hidden' name='to[]' value='1' />
     <input type='hidden' name='to[]' value='2' />
    
     .. etc ..
     .. rest of you're form ..
    </form>
    

    jQuery 更改数据:.. 部分为:

    data: $('#myform').serialize()
    

    那么你就是 PHP:

    foreach ( $_POST [ 'to' ] as $num )
    {
     // do something with $num;
    }
    

    类似这样的选项?

    【讨论】:

      【解决方案2】:

      首先,您可能想使用implode,而不是爆炸,来构造您的$toField 变量;-)

      $ids = array(24, 25, 26, 29);
      $toField = implode(',', $ids);
      var_dump($toField);
      

      哪个会给你

      string '24,25,26,29' (length=11)
      

      然后您将其注入表单中;这样的事情可能会做:

      <input type="hidden"  value="<?php echo $toField; ?>">
      

      (请确保您的表单的 HTML 源代码 ;-))


      然后,在提交表单时接收表单数据的 PHP 脚本中,您将使用 explode 从字符串中提取数据作为数组:

      foreach (explode(',', $_POST['receiverID']) as $receiverID) {
          var_dump($receiverID);
      }
      

      这会得到你:

      string '24' (length=2)
      string '25' (length=2)
      string '26' (length=2)
      string '29' (length=2)
      

      而且,现在,您可以使用这些 ID...

      【讨论】:

        【解决方案3】:

        您可以在php代码中获取字符串并用逗号分隔它,然后循环遍历值。

        http://us3.php.net/split

        【讨论】:

          【解决方案4】:

          我会整理出几件事情:-

          • 您的 toField 输入元素上缺少 id 'toField'。

          • 您应该在 $id 变量上使用 implode() 而不是分解它。

          • 另一方面,您应该在recieverId 字符串上调用explode()。

          【讨论】:

            【解决方案5】:

            只需在 for each 循环中回显您的数组,并使用一些特殊字符,例如 | &| . 如果它是多维的,则在两个循环中使用每个字符并回显它。 并通过使用一些分隔符函数将其更改回 java 脚本中的数组

            【讨论】:

              猜你喜欢
              • 2016-03-18
              • 1970-01-01
              • 2012-07-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-09-11
              • 2020-04-01
              • 2012-08-27
              相关资源
              最近更新 更多