gpt4 book ai didi

php - Ajax post 请求仅在有多个 echo 语句时打印

转载 作者:搜寻专家 更新时间:2023-10-31 21:56:34 24 4
gpt4 key购买 nike

我正在使用 ajax 处理登录表单。请求中的一切都正常工作,只有一个异常(exception)。正在将数据提交到文件 login.php

该文件中的相关代码如下:

$dealer = $stmt->fetch(PDO::FETCH_ASSOC);

$a = [];

if (!$dealer) {
$a['response'] = 'error';
} else {
$a['response'] = 'ok';
}

$output = json_encode($a);
echo $output;
die();

当直接调用脚本时,给出错误响应并回显给浏览器。但是,当通过邮寄方式提交值时,不会返回任何内容。如果我在 die() 调用之前的任何位置添加另一行将字符回显到屏幕,则所有内容都会回显,包括 $output 的值。

知道为什么会这样以及如何纠正吗?

编辑:

响应头如下:

HTTP/1.1 200 OK

Date: Thu, 08 Oct 2015 15:02:00 GMT

Server: Apache

X-Powered-By: PHP/5.6.11

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Content-Length: 20

Keep-Alive: timeout=5, max=190

Connection: Keep-Alive

Content-Type: text/html; charset=UTF-8

因此,根据 Content-Length,响应被传回,但它以某种方式隐藏,因此 javascript 无法读取它,并且在 Chrome Web 开发人员工具中不可见。如果我将回显行更改为:

echo $output.$output;

或者如果我添加第二个 echo,如下所示:

echo $output;
echo $output;

Content-Length变为40,打印如下:

{"response":"error"}{"response":"error"}

最佳答案

经过一些小的编辑,我设法让您的代码为我工作。我用 JQuery 提出了一个请求,以模仿来自客户端的 AJAX 请求。

PHP 代码:

<?php

$dealer = true; // Imitating a successful login.
$a = array(); // '[]' wasn't working on my localhost setup.

if (!$dealer) {
$a['response'] = 'error';
} else {
$a['response'] = 'ok';
}

$output = json_encode($a);
header('Content-Type: application/json'); // THIS IS IMPORTANT! It tells Javascript that the body of the returned information is JSON.
echo $output;
exit(); // I prefer to only use die() if I'm echoing something when killing the script, it's just a matter of personal choice.

header('Content-Type: application/json'); 行确保 PHP 脚本返回的正文被客户端注册为 JSON 格式。

我的 AJAX 测试设置 (HTML):

<p>Response: <span id="test">default</span></p>

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
var jqxhr = $.ajax("login.php").done(function(e) {
document.getElementById("test").innerHTML = e.response;
}).fail(function() {
alert('Failed to fetch information.');
});
</script>

我在这个答案中使用了 jQuery,我建议您在您的应用程序中使用 jQuery,因为它是一个了不起的 Javascript 库,几乎可以简化任何事情。

这对我有用,希望对您有所帮助!

关于php - Ajax post 请求仅在有多个 echo 语句时打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002840/

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