我有这个php,如果触发错误则返回一个数组,否则返回<DIV>
if(!empty($error)) {
$true = true;
$res = array('info' => '$error', 'error' => '$true');
echo json_encode($res);
die();
} else {
// no error
echo "<div> no error </div>";
}
我认为我的问题在于dataType:json
参数,因为它需要JSON_ENCODED格式?如果满足<DIV>
条件,我只想附加else
(非json_encoded)。
$.ajax
({
type : 'POST',
url : 'submitForm.php',
data : formData,
dataType : 'json',
success : function(data) {
if(data.error == true) {
console.log(data.info); //display error
} else {
console.log(data);
//some jquery to append the <div>
}
}
})
检查标题似乎没问题,预览标签返回<DIV>
数据
Request Method:POST
Status Code:200 OK
但它没有追加, Nor <DIV>
中显示console.log
。
如果满足某个PHP条件,有没有办法可以禁用dataType
?或者,在同一PHP文件中使用非json_encoded格式处理json_encoded的正确方法是什么?
答案 0 :(得分:1)
也可以使用json返回你的html
PHP
if(!empty($error)) {
$true = true;
$res = array('info' => $error, 'error' => $true);
} else {
// no error
$res = array('html'=>"<div> no error </div>");
}
echo json_encode($res);
HTML
$.ajax
({
type : 'POST',
url : 'submitForm.php',
data : formData,
dataType : 'json',
success : function(data) {
if(data.error == true) {
console.log(data.info); //display error
} else {
console.log(data);
$('div').append(data.html);
}
}
})
答案 1 :(得分:0)
使用json进行错误,使用html(或伪html)进行常规回复对我有点困难。
话虽如此,如果您真的想要这样做,您显然无法使用dataType: 'json'
选项,因为这会指示$.ajax()
期望(和解析)json数据因此,如果收到的内容不是有效的json字符串,则会抛出异常。
但无论如何,你可以通过自己解析json数据来模拟它。例如:
dataType: "text",
success: function(data) {
try {
data = JSON.parse(data);
if (! data.error) { // What if you send json witout error flag?
data.error = true;
data.info = "Received json without error info."
};
} catch (e) {
data = {
contents: data,
};
};
if (data.error) {
console.log(data.info);
} else {
console.log(data.contents);
// Or whatever you want to do wit received STRING
},