Php AJAX示例,带有传递对象的JSON响应

Php AJAX示例,带有传递对象的JSON响应,php,jquery,ajax,Php,Jquery,Ajax,我很难使用AJAX将关联数组发送到php文件。有些事情我不太明白。下面是我从一种输入标记形式生成数组的代码,但我不知道如何在php中发送和解释它 <script type="text/javascript"> $(document).ready(function(){ $(':submit').on('click', function() { // This event fires when a button is clicked var theData = {};

我很难使用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>

$(文档).ready(函数(){
$(':submit')。在('click',function(){//单击按钮时激发此事件
var theData={};
$(“:输入:非(:按钮)”)。每个(
函数(索引){
var输入=$(此);
数据[input.attr('name')]=input.val();
}
);
$.ajax({//ajax调用开始
url:“http://www.aberlechiropractic.com/meningealrelease/modifydoctors/modifydoctors3.php",
数据:数据,
数据类型:“json”,
成功:功能(数据)
{
$('#wines').html('')//Clear#wines div
$('#wines').append('收到的数据:'+Data.name+''+Data.address+'
'); } }); return false;//防止页面不刷新 }); }); 全部的
以下是我的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。这是另一件我忘了展示的东西。这就是返回数据并显示数据的地方,但是没有显示名称。

对不起,我在电话上,所以这是一个简短的回答,但请使用serialize

范例

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

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


其次,看起来您缺少了AJAX成功响应中引用的
,因此您需要添加它

尝试此操作您必须在表单中添加按钮才能启动操作:

<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);
?>

$(文档).ready(函数(){
$(“#提交”).live('click',function(){
var theData={};
$(“:输入:非(:按钮)”)。每个(
函数(索引){
var输入=$(此);
数据[input.attr('name')]=input.val();
}
);
$.ajax({
url:“http://www.aberlechiropractic.com/modifydoctors3.php",
数据:数据,
数据类型:“json”,
成功:功能(数据)
{
$('#wines').html('')//Clear#wines div
$(“#wines”).append('收到的数据:'+Data+'
'); } }); return false;//防止页面不刷新 }); });
收集值的jQuery代码是正确的,尽管
.serialize()
会简化它


要在PHP中检索值,与正常提交表单的情况相同。它们在
$\u GET['name']
$\u GET['address1']
data
只是包含对象的Javascript变量的名称,它不是发送到PHP的属性名称。

实际上是echo,而不是print。两者都可以工作。Echo的系统资源不足。
.live()
已被弃用,并已在jQuery 1.9中删除。改为使用
.on
。当我更改代码时,我应该回答自己的问题还是编辑原始问题?我将其从.live()更改为.on()…data:theData.serialize(),除非我写错了,否则无法工作。您的其他建议帮了大忙。