2013-10-04 34 views
0

我在使用AJAX向PHP文件发送关联数组时遇到困难。有些事情我不清楚。这里是我的代码,从一个输入标签的形式,使数组,但我不知道如何发送它并解释它在PHP中。带有JSON响应并带有对象的AJAX示例

<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 =葡萄酒的股利。这是我忘了显示的另一件事。然而,这是数据返回并显示时没有名称的地方。

+0

实际上是回声,不是打印。 –

+0

两者都有效。尽管如此,Echo的系统资源较少。 – Christian

+2

'.live()'已弃用,并已在jQuery 1.9中删除。改用'.on'。 – Barmar

回答

1

jQuery代码收集的价值观是正确的,虽然.serialize()将简化它。

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

+0

没有使用.serialize() – docaberle

+0

你的其他建议是一个很大的帮助。 – docaberle

0

对不起,我我的手机上,以便其短的答案,但使用序列

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

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

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

其次,它看起来像你错过了你在AJAX成功响应中引用的<div id="wine">,所以你需要添加它。

0

试试这个你要添加按钮,您的形式来触发动作:

<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); 
?> 
相关问题