gpt4 book ai didi

php - Ajax 调用返回错误,状态为 200,状态文本 OK

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

我正在开发一个表单,用户可以在其中发送图像和评论。无论发生什么情况,ajax 调用都会直接出错(即使文件和注释已成功上传并写入数据库)。

我尝试记录错误反馈,这就是我收到的:

Object {readyState: 4, responseText: "<pre class='xdebug-var-dump' dir='ltr'>↵<b>array</…DstagramPost succesfully made.{"check":"success"}", status: 200, statusText: "OK"}

这是我的 ajax 调用:

<script type="text/javascript"> 
$(document).ready(function(){

$("#postSubmit").on("click", function(e){
$.ajax({
url: "ajax/postUpload.php",
type: "POST",
data: new FormData($("#postForm")[0]),
dataType: 'json',
contentType: false,
cache: false,
processData:false,
success: function(data)
{
console.log(data);
},
error: function (request, status, error) {
console.log(request);
alert('Something is wrong');
}
});
e.preventDefault();
});
});
</script>

还有我的 PHP 代码:

<?php
include_once("../classes/Post.class.php");
session_start();
$post = new Post();

var_dump($_FILES);
if(!empty($_POST)){

$file_tmp_name = $_FILES['postImage']['tmp_name'];

$post->checkIfImage();
$post->checkFileSize();
$post->checkFileFormat();
$post->checkAspectRatio();

if(!$post->checkIfImage()){
$uploadStatus['image'] = "false";
}

if(!$post->checkFileSize()){
$uploadStatus['size'] = "false";
}

if(!$post->checkFileFormat()){
$uploadStatus['format'] = "false";
}

if(!$post->checkAspectRatio()){
$uploadStatus['ratio'] = "false";
}

if($post->checkIfImage() && $post->checkFileSize() && $post- >checkFileFormat() && $post->checkAspectRatio()){
$result = $post->createPost($file_tmp_name);
$uploadStatus['check'] = "success";
}else{
$uploadStatus['check'] = "error";
}

header('Content-Type: application/json; charset=utf-8', true);
echo json_encode($uploadStatus);
}

?>

总而言之,如果图像通过了 checkIfImage() 等所有要求,...它就会上传到文件夹,并且图像路径和描述会发布在数据库中。如果它没有通过所有要求,它就不会发布在那里。但是我每次都会出错。

如果我删除 dataType: 'json' 部分,它会出错,如果我将其更改为其他任何内容,我会得到以下输出:

<pre class='xdebug-var-dump' dir='ltr'>
<b>array</b> <i>(size=1)</i>
'postImage' <font color='#888a85'>=&gt;</font>
<b>array</b> <i>(size=5)</i>
'name' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'passfoto.png'</font> <i>(length=12)</i>
'type' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'image/png'</font> <i>(length=9)</i>
'tmp_name' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'D:\xampp\tmp\phpDFE9.tmp'</font> <i>(length=24)</i>
'error' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>0</font>
'size' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>112825</font>
</pre>D:\xampp\htdocs\IMDstagramPost succesfully made.{"check":"success"}

我需要的部分当然是检查,所以我可以例如在检查=成功时清除表单,或者如果不成功则给出错误..

最佳答案

问题是因为在回显 JSON 之前,您在 PHP 文件中输出了一些 HTML。您可以在 JSON response 参数中看到它:

<pre class='xdebug-var-dump' dir='ltr'>↵<b>array</…DstagramPost succesfully made.

删除该 HTML。响应文本应此 JSON 格式的字符串:

{"check":"success"}

关于php - Ajax 调用返回错误,状态为 200,状态文本 OK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36889668/

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