我希望我的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");
答案 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__)
更新: 忘记提到你需要在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',
。