Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析JSON请求失败-已修复_Php_Jquery_Mysql_Ajax_Json - Fatal编程技术网

Php 解析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:

一切正常,数据已经保存到mySQL中,但问题是我仍然在解析JSON请求失败时出错。我不太确定这个错误是从哪里来的,它的原因是什么

脚本:

$("#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';
}