Ajax发送数据,但php没有收到

The*_*ist 0 php ajax jquery post send

虽然我还在阅读Nicholas C. Zakas的书(在4天内阅读了300多页),但同时我还有一个小项目,为我们后来的大项目创建一个半自动化的文档生成器页面.这已经完成了一半,但现在我想给它提供更多的功能,这需要我将textareas的值发送给PHP,因此PHP可以更新mysql而反之亦然,但现在不是问题.

问题: Ajax成功,我得到了成功消息,但PHP没有读取POST.为什么?

我做了我的研究,我阅读了stackoverflow主题和其他网站,phpmanual,w3school示例的音调,但出了点问题.

基本的HTML示例:

<form id="foo">
   <label for="bar">A bar</label>
   <input id="bar" name="bar" type="text" value="" />
   <input type="submit" value="Send" />
</form>

<div id="result"></div>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="script.js"></script>
Run Code Online (Sandbox Code Playgroud)

我找到的基本ajax调用(发送):

/* Attach a submit handler to the form */
$("#foo").submit(function(event) {

    /* Stop form from submitting normally */
    event.preventDefault();

    /* Clear result div*/
    $("#result").html('');

    /* Get some values from elements on the page: */
    var values = $("#foo").serialize();
    console.log("val: "+values);

    /* Send the data using post and put the results in a div */
    $.ajax({
        url: "ez.php",
        type: "POST",
        data: values,
        success: function(){
            $("#result").html('Submitted successfully');
        },
        error:function(){
            alert("failure");
            $("#result").html('There is error while submit');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

简单的PHP用于测试我是否获得该数据

<?php

   if(isset($_POST['bar']))
   {
       echo "hello " . $_POST['bar'];
   };

?>
Run Code Online (Sandbox Code Playgroud)

这三个文件都在同一个文件夹中.

我肯定会在以后更深入地了解这个话题,我现在需要尽快完成这个小项目.我将成为前端开发人员,所以php部分不会等我,但现在我需要它进行测试,直到我可以与服务器端程序员交谈.我想确定哪些变量和数据会发送给他,以便他以后可以处理.

提前致谢!

Gra*_*hie 8

你怎么知道你的脚本没有收到数据?

将成功改为以下内容:

success: function(data){
        $("#result").html('Submitted successfully:' + data);
    },
Run Code Online (Sandbox Code Playgroud)

您所做的只是说'如果收到响应而没有错误更新div' - 您无法知道您的php脚本是否已经成功运行(它已经运行,因为您正在获得成功)或者目前没有.

通过函数中的"数据",您可以查看脚本是否已传回信息.

试试上面的内容,让我们知道你是如何进行的

为了清晰

访问它们时,PHP脚本运行ONCE - 它们没有内存(除了固定变量之外) $cheese = "yummy";

您访问该页面时无法看到响应的原因(即使在运行您的脚本之后)是因为它有点愚蠢并且不记得您运行它.

因此,直接访问脚本是脚本

"哦 - 这是表演时间,对吧.....错误.....好吧 - 让这个人发给我'酒吧' - 在那种情况下不好意思我不会做if if声明里面的内容 - 结束我的工作 - 这里无事可做,我什么都不回来.

试试这个:

更改 $_POST['bar'] to $_GET['bar'];

然后转到脚本所在的URL并输入http://yoururl.com/script.php?bar=terrence

你会注意到你现在得到了一个响应,因为你传递了它想要返回的脚本,所以在if语句中做了什么.

要保持数据,您需要存储到数据库或文本文件.

希望很清楚!

  • @ThePianist GET和POST只是传递数据的方法,你对传递的数据服务器端所做的不依赖于所使用的方法.您也可以使用GET存储在数据库中.如果您不想关心使用的方法,您仍然可以使用$ _REQUEST []来处理这两种情况http://www.php.net/manual/en/reserved.variables.request.php (2认同)