【问题标题】:Php does not echo the data from a jQuery Ajax submitPHP 不回显来自 jQuery Ajax 提交的数据
【发布时间】:2013-05-08 23:13:49
【问题描述】:

我正在摆弄 jQuery.ajax() 和 php,我需要一些指针才能使一切正常工作:

这里是php代码:

if(!empty($_POST["fname"])){
        $firstName = $_POST["fname"];
        echo $firstName."<br />";
    }
    if(!empty($_POST["id"])){
        $age = $_POST["id"];
        echo $age;
    }

这里是 jQuery 代码:

jQuery("#ajaxForm").submit(function(event){
    event.preventDefault();

    var firstName = jQuery("#firstName").val();
    var age = jQuery("#age").val();

    // jQuery.ajax() - Perform an asynchronous HTTP (Ajax) request.
    jQuery.ajax({
        type: "POST",
        url: "http://localhost/profiling/index.php",
        data: {fname:firstName, id:age}
    }).done(function(result){
        alert("Your data has been submitted!" + firstName);
    });
    var result;
    console.log(result);

});

来自 jQuery 的值存在,我收到警报,告诉我数据已提交,firebug 显示 Ajax 帖子正在工作。

为什么 php 不获取我的数据并回显它?

【问题讨论】:

  • 你试过console.log(result);吗?
  • 'result' 将保存 php 返回的数据。
  • 因为你没有这样做。从该 php 接收日期并将其附加到某些 div 中
  • 我添加了 console.log(result),更新我的问题 - 结果未定义
  • 它未定义,因为您在登录之前再次声明了它。请参阅下面的答案。

标签: php jquery ajax


【解决方案1】:

您需要通过 php 获取返回的数据并对其进行处理。请参阅下面添加的代码行。

jQuery("#ajaxForm").submit(function(event){
event.preventDefault();

    var firstName = jQuery("#firstName").val();
    var age = jQuery("#age").val();

    // jQuery.ajax() - Perform an asynchronous HTTP (Ajax) request.
    jQuery.ajax({
        type: "POST",
        url: "http://localhost/profiling/index.php",
        data: {fname:firstName, id:age}
    }).done(function(result){
        alert("Your data has been submitted!" + firstName);
        alert("This is the data returned by the php script: " + result)
    });

});

【讨论】:

  • 泰!奇怪,结果 - 提醒我并给我页面的全部内容。
  • 我可能不是很了解ajax,在ajax提交后 echo $_POST["fname"] 不应该工作吗?
  • php 脚本中还包含什么?
  • 是的,所以,只需编写一个非常短的脚本,如果这就是你想要的,它只返回 fname。
【解决方案2】:

您必须使用 success 回调函数来处理从 POST 到您的 Php 页面的响应。

this thread中所述

您的代码可能类似于以下内容:

  /* Send the data using post and put the results in a div */
$.ajax({
  url: "test.php",
  type: "post",
  data: values,
  success: function(returnval){
      alert("success");
       $("#result").html('submitted successfully:' + returnval);
  },
  error:function(){
      alert("failure");
      $("#result").html('there is error while submit');
  }   
}); 

因此,您必须以某种方式将来自您的 Php 的响应附加到使用 jQuery 的 DIV 等 HTML 元素

希望对你有帮助

【讨论】:

  • $_POST["fname"] - 我应该能够在 Ajax 提交后回应这个
  • 另外,添加一个数据类型。 html或json。
  • @webmasters 是的,你的 PHP 很好,你可以回显 $_POST["fname"] 变量,但是 HTML 怎么知道它必须显示该值?这就是 jQuery 通过在页面某处显示 Php 回显值来采取行动的时候。这有意义吗?
  • 我明白了,这是有道理的,因为我没有刷新页面...但是我该怎么做呢?
  • @juanreyesv 该脚本不会对返回的数据做任何事情。
【解决方案3】:

正确方法:

<?php
$change = array('key1' => $var1, 'key2' => $var2, 'key3' => $var3);
echo json_encode(change);
?>

然后是jquery脚本:

<script>
$.get("location.php", function(data){
var duce = jQuery.parseJSON(data);
var art1 = duce.key1;
var art2 = duce.key2;
var art3 = duce.key3;
});
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多