Php 解析JSON请求失败-已修复
一切正常,数据已经保存到mySQL中,但问题是我仍然在解析JSON请求失败时出错。我不太确定这个错误是从哪里来的,它的原因是什么 脚本:Php 解析JSON请求失败-已修复,php,jquery,mysql,ajax,json,Php,Jquery,Mysql,Ajax,Json,一切正常,数据已经保存到mySQL中,但问题是我仍然在解析JSON请求失败时出错。我不太确定这个错误是从哪里来的,它的原因是什么 脚本: $("#add_submit_form").on("submit", function(event) { event.preventDefault(); console.log($(this).serialize()); $.ajax({ type: "POST", url: "add_submit.php", data:
$("#add_submit_form").on("submit", function(event) {
event.preventDefault();
console.log($(this).serialize());
$.ajax({
type: "POST",
url: "add_submit.php",
data: "subject_code="+subj_code,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data){
alert("success");
},
error:function(x,e){
if(x.status==0){
alert('You are offline!!\n Please Check Your Network.');
}else if(x.status==404){
alert('Requested URL not found.');
}else if(x.status==500){
alert('Internel Server Error.');
}else if(e=='parsererror'){
alert('Error.\nParsing JSON Request failed.');
}else if(e=='timeout'){
alert('Request Time out.');
}else {
alert('Unknow Error.\n'+x.responseText);
}
}
});
});
data: $(this).serialize(),
PHP:
HTML:
更改:删除mysql\u real\u escape\u字符串
脚本:
$("#add_submit_form").on("submit", function(event) {
event.preventDefault();
console.log($(this).serialize());
$.ajax({
type: "POST",
url: "add_submit.php",
data: "subject_code="+subj_code,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data){
alert("success");
},
error:function(x,e){
if(x.status==0){
alert('You are offline!!\n Please Check Your Network.');
}else if(x.status==404){
alert('Requested URL not found.');
}else if(x.status==500){
alert('Internel Server Error.');
}else if(e=='parsererror'){
alert('Error.\nParsing JSON Request failed.');
}else if(e=='timeout'){
alert('Request Time out.');
}else {
alert('Unknow Error.\n'+x.responseText);
}
}
});
});
data: $(this).serialize(),
PHP:
结果:在mySQL上保存,控制台日志仍然相同,错误仍然相同
开发工具结果:
阵列8{
[主题代码]=>
第6条工程111
[受试者姓名]=>
第20条传播艺术1
[主题课程]=>
string45信息技术理学学士
[主题日]=>
string4试验
[主题时间]=>
string4试验
[主题年]=>
string4试验
[主题部分]=>
string4试验
[主题室]=>
string4试验
}
{状态:成功}
修正:添加了一些代码
PHP:
将if/else语句更改为PHP:
if($stmt->affected_rows > 0){
echo json_encode($response_array);
}
else{
$response_array['status'] = 'error';
}
转到开发人员工具中的网络选项卡,查看对AJAX调用的响应。确保JSON之前或之后没有任何内容。您似乎正在使用mysqli执行查询。为什么要使用mysql\u real\u escape\u字符串?首先,您混合了两个不同的扩展,这是无效的。第二,当您使用准备好的语句时,您不应该转义参数。if$stmt不会告诉您插入是否成功。你需要使用if$stmt->infected_rows>0.sir@Barmar,对不起,我真的不知道如何使用网络选项卡,我在这里得到的是:professor_home.php,style.css,jquery-1.11.1.min.js,professor_home.js,添加关于mysql_real_escape_字符串的_submit.php,这是我以前使用的代码,然后研究,我看到了这些准备好的语句,它们可以进一步增强安全性,所以我认为将它们结合起来会很好。我想是时候让您学习如何使用开发人员工具调试Javascript了。有一些教程,谷歌为他们。
echo json_encode($response_array);
$response_array = array('subject_code' => $subject_code,
'subject_name' => $subject_name,
'subject_course' => $subject_course,
'subject_day' => $subject_day,
'subject_time' => $subject_time,
'subject_year' => $subject_year,
'subject_section' => $subject_section,
'subject_room' => $subject_room);
if($stmt->affected_rows > 0){
echo json_encode($response_array);
}
else{
$response_array['status'] = 'error';
}