【问题标题】:Updating div content with jQuery ajax function over PHP通过 PHP 使用 jQuery ajax 函数更新 div 内容
【发布时间】:2016-05-22 03:01:53
【问题描述】:

我正在尝试通过使用 jQuery 的 .ajax() 函数将两个输入字段的值发送到 php 文件 (search_value.php) 来更新我的 div 内容 (#update_div)。

如果我只是使用 html 表单 POST 方法重定向输入字段的两个值,它就可以工作。所以search_value.php应该是正确的。


我的 HTML 代码:

<form id="my_form">
  <input id="food" name="food">
  <input id="amount" value="amount in gram" name="amount">
  <input type="button" value="Update" id="submit" name="submit" />
</form>

<div id="update_div">
</div>

我的 Javascript 代码:

$("#submit").click(function() {
  var food = $("#food").val();
  var amount = $("#amount").val();
  $.ajax({
    url: 'search_value.php',
    type: 'GET',            
    data: {"food":food,"amount":amount},
    success: function(data)
    {
      $('#update_div').html(data);
    }
  });
});

我的 PHP 代码:

<?php
  $pdo = new PDO('mysql:host=localhost;dbname=calotools', 'root', '');

  $food = $GET_['food'];
  $amount = $GET_['amount'];

  $query="SELECT * FROM nahrungsmittel WHERE name = '$food'";

  $user = $pdo->query($query)->fetch();
  echo $user['name']."<br />";
  echo $user['kcal'] / 100 * $amount;
?>

点击按钮并没有真正得到反馈。也许你们能告诉我为什么?

【问题讨论】:

  • 把你的整个 $("#submit").click(function() javascript 放在你的浏览器控制台中,然后尝试点击提交按钮,它工作了吗?
  • 使用浏览器控制台网络查看是否正在发出请求。添加一些错误处理。确保代码运行时存在$('#update_div')
  • 你输入了$GET_ 而不是$_GET
  • 我将整个 $("#submit").click(function() 放在浏览器控制台中,但是如果我单击提交按钮,它什么也不会发生。这是控制台的图片:i.stack.imgur.com/13w6F.png

标签: javascript php jquery ajax form-submit


【解决方案1】:

对于GET请求,不应有数据部分,将其作为查询字符串如下js代码:

$("#submit").click(function() {
   var food = $("#food").val();
   var amount = $("#amount").val();
   $.ajax({
   url: 'search_value.php?food='+ food + '&amount='+amount,
   type: 'GET',
   datatype: "html",   
   success: function(data)
   {
     $('#update_div').html(data);
   },
   failure : function(ex)
   {
      console.log(ex);
   }
  });
});

并在 php 中使用 $_GET 而不是 $GET_

【讨论】:

  • 我将代码更改为您的建议并更新了 php 文件。我再次上​​传了我的项目,但如果我按下提交按钮,它什么也不会发生。
  • 我添加了一个简单的回声“这是一个测试”;在我的 search_value.php 中,当我单击提交按钮时我仍然什么也看不到。所以这似乎是问题
  • 好的。因此,当您单击按钮时,您能否在开发人员工具(chrome 中的网络选项卡)中看到请求和响应。还要在 $.ajax 中添加 datatype: "html" 以及失败功能。检查更新的答案。
  • 非常感谢您的帮助。我认为这是第一次修复后的缓存问题,我更新了您帖子中的最后更改,清除了缓存,现在它可以工作了!!
【解决方案2】:

您是否在页面加载后运行您的代码?我已经多次犯过这个错误,如果你没有,我建议将整个事情包装在$(function(){ /* Everything you have */ });

【讨论】:

  • 整个javascript代码运行在一个$(document).ready(function()
【解决方案3】:

我更喜欢使用帖子 在您的 php 脚本中,将 $GET_ 替换为 $_POST

<?php
  $pdo = new PDO('mysql:host=localhost;dbname=calotools', 'root', '');

  $food = $_POST['food'];
  $amount = $_POST['amount'];

  $query="SELECT * FROM nahrungsmittel WHERE name = '$food'";

  $user = $pdo->query($query)->fetch();
  echo $user['name']."<br />";
  echo $user['kcal'] / 100 * $amount;
?>

在您的 javascript 代码中,结果位于 data.responseText

这里是新脚本

$("#submit").click(function() {
  var food = $("#food").val();
  var amount = $("#amount").val();
  $.ajax({
    url: 'search_value.php',
    type: 'POST',            
    data: {"food":food,"amount":amount},
    success: function(data)
    {
      $('#update_div').html(data.responseText);
    }
  });
});

【讨论】:

  • 我尝试使用 POST 和 data.responseText 但它不起作用。如果我单击提交按钮,则没有任何操作。
  • 也许你的脚本没有加载 try make at the top of the page ,或者你缺少 jquery
  • 我将整个 javascript 部分放在 $( document ).ready(function() 中,并且 jquery 不能丢失,因为在同一个站点上还有几个 jquery 函数可以正常运行
  • 如果您使用的是 chrome,您可以使用 inspect element - Network 跟踪您的 ajax 查询,单击您的按钮,然后您将看到您的 ajax 查询
  • 根据您的建议进行了最后的更改,清除了缓存,现在可以正常工作了,非常感谢!
【解决方案4】:

经过测试,您的 JavaScript 代码可以正常工作。问题可能出在 PHP 代码中。 您是否尝试过按照其他人的建议更正“$_GET”?

【讨论】:

  • 我认为这是我从您的帖子中获取第一个修复后的缓存问题。在工作,在忙!谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2011-10-28
  • 1970-01-01
相关资源
最近更新 更多