gpt4 book ai didi

jquery - Ajax调用、响应处理问题

转载 作者:行者123 更新时间:2023-12-01 07:03:20 26 4
gpt4 key购买 nike

我有一个简单的表单,它通过 Ajax 调用发布内容。

<form id="NewDataForm">
<label>Name</label>
<input type="text" id="name" name="name" value="" required />
<button id="saveNewData" type="submit" class="btn btn-primary">Save</button>
<div id="errorNewData" class="alert alert-danger text-center" role="alert"></div>
</form>

Jquery 代码:

$('#saveNewData').on('click', function(e){
e.preventDefault();
$('#errorNewData').hide();
if ($('#NewDataForm')[0].checkValidity()) {
$.ajax({
url: '/admin/includes/post.php',
type: 'POST',
data: $('form#NewDataForm').serialize()
})
.done(function(msg) {
alert(msg);
if (msg === 'go') {
// some actions
}else{
$('#errorNewData').show();
$('#errorNewData').html(msg);
}
});
} else {
$('#NewDataForm')[0].reportValidity();
}
});

目前,post.php 仅包含用于测试目的:

<?php
echo 'go';
?>

但是无论post.php返回什么内容,它总是显示#errorNewData内容。

if (msg === 'go') 永远不会为真,即使答案是 go。

但是alert(msg)显示“go”,并且#errorNewData也显示“go”

最佳答案

msg 可能是 "go\n""go\r\n" 不完全是 "go",因为结束 ?> 标记后可能有一个换行符。 (注意:PHP guidance 是把它去掉。)所以这个检查应该有效:

if (msg.trim() === "go")

...或者如果您删除 ?> 标记,您之前的检查可能会开始工作。

这是我几乎总是对 ajax 调用 JSON 进行回复的原因之一;前导和尾随空白对其没有影响。我可能会:

<?php
header("Content-Type: application/json");
echo json_encode(Array("success" => True));

然后在 JavaScript 中:

if (msg.success) {

(jQuery 将查看内容类型并自动为您解析 JSON。)

关于jquery - Ajax调用、响应处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61027138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com