Jquery ajax没有显示php echo结果

时间:2016-03-29 11:26:48

标签: php jquery ajax

我希望我的ajax在发布数据后显示来自php文件的回声。我将数据发布到数据库中,当帖子成功时,我希望它能够回应“完成”#39;我将使用从帖子中获得的任何结果来确定从处理过的php文件中获得的消息。在我点击提交时,它会插入数据,但是当我添加警报以查看我的ajax脚本上的数据是否反映了“完成”时,我得到了我创建的表格的html代码单词'完成'在底部。我希望Complete能够进入'状态参数'。

Ajax脚本

$.ajax({ 
            type: "POST",
            data: $('#frm').serialize(),
            url: "create_submitted.php?",
            cache:false,
            success: function (status) {
                        alert(status);
                        location.reload();
                }
            });

Php脚本

session_start();
require_once("database.php");
require_once("class.php");
$reg = new SUBMITTED();
$reg->month = $_POST["month_s"];
$reg->year = rtrim($_POST["year_s"]);
$reg->month_year = $reg->year."-".date('m',strtotime($_POST["month_s"]))."-00";
$reg->user_fk = $_SESSION['franchise_code'];
$reg->create();
echo json_encode("Complete");

2 个答案:

答案 0 :(得分:1)

删除location.reload,而不是只更新所需的html片段(例如div或数据将要去的其他元素)。 您不需要删除注释中提到的js上的datatype:json,但是如果您希望返回json,则需要在php中设置相应的头:

header("Content-Type: application/json");

这样jQuery就不会忽略具有不同内容类型标题的响应,默认情况下是“text / plain”或“text / html”。

您可以使用以下命令更新HTML

$("#targetElement").html("my html code");

或没有jQuery:

document.querySelector("#targetElement").innerHtml("my html code");

此外,我强烈建议您对您的PHP脚本进行一些验证,否则如果有人在提交的数据中插入了一个讨厌的<script>标记,您就会自行设置XSS攻击(您可以通过传递收到的数据来避免它由htmlentities(__input_goes_here__)

在php端输入

更新: 忘记提到你需要在phpbefore中设置标题,然后将任何内容打印到页面上。

此外,如果您检查成功回调here,您会看到成功可以采用3个参数:

Type: Function( Anything data, String textStatus, jqXHR jqXHR )

其中:

  • data是从服务器返回的数据
  • textStatus是从服务器返回的状态信息(404,200等)
  • jqXHR是进行调用的jquery对象。

目前您只接受一个参数,但我建议您console.log这三个参数,以便您可以了解可能出现的问题。

希望有所帮助:)

答案 1 :(得分:0)

试试这个:

$.ajax({ 
type: "POST",
data: $('#frm').serialize(),
url: "create_submitted.php?",
cache:false,
success: function (status) {
     alert(status);    
}});

由于location.reload();每次脚本成功,您都在重新加载页面 此外,不需要datatype: 'json',