【问题标题】:AJAX example with JSON Response with object being passed带有正在传递对象的 JSON 响应的 AJAX 示例
【发布时间】:2023-03-18 03:58:02
【问题描述】:

我很难使用 AJAX 将关联数组发送到 php 文件。有些东西我不是很清楚。这是我从输入标签的形式制作数组的代码,但我不知道如何发送它并在 php 中解释它。

<script type="text/javascript">
$(document).ready(function(){
  $(':submit').on('click', function() { // This event fires when a button is clicked
      var theData = {};
      $(":input:not(:button)").each(
        function(index){  
            var input = $(this);
            theData[input.attr('name')] = input.val();
        }
      );
      $.ajax({ // ajax call starts
          url: "http://www.aberlechiropractic.com/meningealrelease/modifydoctors/modifydoctors3.php",
          data: theData,
          dataType: 'json',
          success: function(data)
          {
              $('#wines').html(''); // Clear #wines div
              $('#wines').append('Data Received: ' + data.name+'   '+data.address + '<br/>');
          }
      });
      return false; // keeps the page from not refreshing 
  });
});
</script>

<body>
  <form>
    <input type="text" name="name" id="name" value="Jeff Aberle"/>
    <input type="text" name="address1" id="address1" value="4710 East Broadway"/>
    <button type="submit" name="updatedoctor" id="updatedoctor" value="all">All</button>
  </form>
</body>

这是我的 php 代码:

<?php
$name = $_GET['name'];
$address1 = $_GET['address1'];
$array = array($button, $address1);
print json_encode($array);
?>

啊,现在一切正常。我在这里编辑了所有代码以使其正常工作。

<?php
// Get value of clicked button
$name = $_GET['name'];
$address1 = $_GET['address1'];
$array = array(
    "name"    => $name,
    "address"  => $address1,
);
print json_encode($array);
?>

我还有一个 id=wines 的 div。这是我忘记展示的另一件事。然而,这就是数据被返回并显示的地方,但没有名称。

【问题讨论】:

  • 其实是回显,不是打印。
  • 两者都可以。不过,Echo 的系统资源较少。
  • .live() 已弃用,并已在 jQuery 1.9 中删除。请改用.on
  • 当我更改代码时,我应该回答我自己的问题还是编辑我原来的问题?
  • 我将它从 .live() 更改为 .on()...data: theData.serialize(),除非我写错了,否则无法工作。

标签: php jquery ajax


【解决方案1】:

您收集值的 jQuery 代码是正确的,尽管 .serialize() 会简化它。

要在 PHP 中检索值,与正常提交表单一样。他们在$_GET['name']$_GET['address1']theData 只是包含对象的 Javascript 变量的名称,它不是发送给 PHP 的属性名称。

【讨论】:

  • 你的其他建议很有帮助。
【解决方案2】:

发送数据:我假设您想发送表单的结果?为此,首先您需要向页面添加一个提交按钮。这应该放在您的表单中以提交代码。

其次,您似乎缺少在 AJAX 成功响应中引用的 &lt;div id="wine"&gt;,因此您需要添加它。

【讨论】:

    【解决方案3】:

    试试这个,您必须在表单中添加按钮才能触发操作:

    <script type="text/javascript">
    
    $(document).ready(function(){
      $('#submit').live('click', function() {
          var theData = {};
          $(":input:not(:button)").each(
            function(index){  
                var input = $(this);
                theData[input.attr('name')] = input.val();
            }
          );
          $.ajax({
              url: "http://www.aberlechiropractic.com/modifydoctors3.php",
              data: theData,
              dataType: 'json',
              success: function(data)
              {
                  $('#wines').html(''); // Clear #wines div
                  $('#wines').append('Data Received: ' + data + '<br/>');
              }
          });
          return false; // keeps the page from not refreshing 
      });
    });
    </script>
    
    <body>
      <form>
        <input type="text" name="name" id="name" value="Jeff Aberle"/>
        <input type="text" name="address1" id="address1" value="4710 East Broadway"/>
        <input type="button" id="submit" value ="send"/>
      </form>
    </body>
    
    
    
    
    <?php
    $button = $_GET['theData'];
    $array = array($button.name, $button.address1, $button.state);
    print json_encode($array);
    ?>
    

    【讨论】:

      【解决方案4】:

      对不起,我在用手机,所以回答很简短,但请使用序列化

      http://api.jquery.com/serialize/

      例子

          $('form').on('submit', function(){
            $data = $(this).serialize();
            //send via ajax
            return false;
          })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-03
        • 1970-01-01
        相关资源
        最近更新 更多