2 qq 20377467 qq_20377467 于 2016.05.10 10:58 提问

ajax请求php一直执行error函数,数据库操作正常,错误500
 $.ajax({
                  type:"post",
                  url:"../php/insert_articles.php",
                  data:"title=" +tle +"&content=" + cnt +"&time=" +time + "&type=" + type,
                  dataType:"jsonp",
                  jsonp: "jsoncallback",
                  error:function(e) {
                    console.log("出错了:"+e.responseText);
                  },
                  success:function(msg){
                    alert("插入成功!");
                   }
            });


            php:

            $result = $db->query($insert);
    if ($result) {
        $list = array("msg" => "insert successfully");
            echo $_POST['jsoncallback']."(".json_encode($list).")";
    }else {

        $list = array("error" =>"an error ocurred");
            echo $_POST['jsoncallback']."(".json_encode($list).")";
    }
错误截图:
![图片说明](https://img-ask.csdn.net/upload/201605/10/1462849117_171571.jpg)

6个回答

qq_20377467
qq_20377467   2016.05.10 11:00
已采纳
showbo
showbo   Ds   Rxr 2016.05.10 11:07
 目测是没有跨域被jquery转为json数据了,你没有跨域不需要jsonp数据

$.ajax({
                  type:"post",
                  url:"../php/insert_articles.php",
                  data:"title=" +tle +"&content=" + cnt +"&time=" +time + "&type=" + type,
                  dataType:"json",




            $result = $db->query($insert);
    if ($result) {
        $list = array("msg" => "insert successfully");
            echo json_encode($list)//去掉回调
    }else {

        $list = array("error" =>"an error ocurred");
            echo json_encode($list)//去掉回调
    }
qq_20377467
qq_20377467 回复无聊码农: 测试了一下是$result->free()有问题
大约 2 年之前 回复
qq_20377467
qq_20377467 回复无聊码农: 真的哎,去掉就可以了,谢谢你。可是为什么这两句有问题呢??
大约 2 年之前 回复
showbo
showbo 回复qq_20377467: 你看你截图http状态码是500,500就是php动态页有问题,肯定不会执行success的。$result->free(); $db->close();应该这2句报错了,去掉看看
大约 2 年之前 回复
qq_20377467
qq_20377467 回复无聊码农: 没什么特殊处理啊,很困惑,就是一个简单的数据库的插入操作嘛。
大约 2 年之前 回复
showbo
showbo 回复qq_20377467: 你php页面是不是做了什么特殊处理,出错设置和http状态为500,但是最后又可以执行echo,因为http状态不失200,其他的都是执行error回调的,所以会出现你那个图片的问题,能正常放回内容,但是状态是500(500是服务器端出错,ajax也会判断这个错误的,不是200状态不执行success)
大约 2 年之前 回复
showbo
showbo 回复qq_20377467: 去网络选项卡看ajax返回什么内容。。指定到echo不应该是500状态,500是php页面报错了,返回的应该是错误信息,而不是json_encode的内容才对
大约 2 年之前 回复
qq_20377467
qq_20377467 我之前试了下json啊,不行的。然后上网搜说可能跨域,改成这样也不行
大约 2 年之前 回复
qq_20377467
qq_20377467   2016.05.10 11:14

我之前试了下json啊,不行的。然后上网搜说可能跨域,改成这样也不行

qq_20377467
qq_20377467   2016.05.10 11:16

$.ajax({
type:"post",
url:"../php/insert_articles.php",
data:"title=" +tle +"&content=" + cnt +"&time=" +time + "&type=" + type,
dataType:"json",
error:function(e) {
console.log("出错了:"+e.responseText);
},
success:function(msg){
alert("插入成功!");
}
});

        php:
        $result = $db->query($insert);
if ($result) {
    $list = array("msg" => "insert successfully");
        echo json_encode($list);
}else {

    $list = array("error" =>"an error ocurred");
        echo json_encode($list);
}
也是一样的错误,执行error,https://img-ask.csdn.net/upload/201605/10/1462849227_30159.jpg
郁闷啊啊啊啊
qq_20377467
qq_20377467   2016.05.10 12:05

<?php
$title = $_POST['title'];
$content = $_POST['content'];
$time = $_POST['time'];
$type = $_POST['type'];
$say_cont = $_POST['say_cont'];

@ $db = new mysqli('localhost', 'a0424114830', 'xxvaq950228', 'a0424114830');
mysql_query("SET  NAMES 'utf8'");
if ($say_cont != '') {
    $insert = "insert into says (sub_date,say) values ('".date('Ymd')."','".$say_cont."')";
}else {
    $insert = "insert into articles(title, time, content, type) values('".$title."','".$time."','".$content."','".$type."')";
}

$result = $db->query($insert);
if ($result) {
    $list = array("msg" => "insert successfully");
        echo json_encode($list);
}else {

    $list = array("error" =>"an error ocurred");
        echo json_encode($list);
}
$result->free();
$db->close();

?>
整个.php的内容

hsd2012
hsd2012   2016.05.10 13:21

JS部分改为以下就好。

 $.ajax({
              type:"post",
              url:"../test2/a1.php",
              data:"title=" +tle +"&content=" + cnt +"&time=" +time + "&type=" + type,
              error:function(e) {
                console.log("出错了:"+e.responseText);
              },
              success:function(msg){
                alert("插入成功!");
               }
        });

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ajax请求成功,但执行error回调
问题: 通过Jquery封装的ajax请求进行文件上传操作时,后端已经返回上传文件成功,前端传参也没有问题,浏览器也没有任何报错,但总是进入error回调,头大! 造成原因: 1.a链接问题 如果a链接里面有href,href=“”会刷新页面,刷新页面之前会进入action,所以会调用ajax获得提交数据,但还没来得及返回,页面就会进行刷新操作,此时只要改成href=“#”,加一个c
$.ajax()方法在请求成功后老是执行error中的函数
$.ajax()方法在请求成功后老是执行error中的函数
http 500 Internal Server Error的错误 ajax请求SpringMVC后台中返回500 Internal Server Error
使用httprequester接口测试能返回数据,但是用ajax返回json格式的时候返回报500Internal Server Error。springMVC+ajax 400 bad request .ajax提交参数到springmvc的后台,一直获取不到参数值,参数值为null.请求的参数变量名-类型与后台的同名参数类型不匹配导致的.请求的方式不对,导致参数没有按后台约定的形式传递
jQuery ajax一直调用error方法,问题解决
首先说原因,然后再说具体情况: 原因一:返回的json格式不对。 原因二:在返回数据之前不能有任何的输出,包括打开调试。例如:后端用的是php,像在返回json数据之前,echo,var_dump等输出是不能有的,debug也要关闭。* 问题描述实现功能:点赞功能 问题:在页面点赞,并执行了后端的代码,但是前端一直调用error方法 下面贴出代码来说明该问题 前端代码:$("#like")
ajax提出post请求,请求正常执行,但是返回error错误
Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了在请求中设置字段async=false
tp5前端请求总是报500 500 Internal Server Error
前端请求接口会报这个错误  但是浏览器直接访问就没有问题  前端只有请求头是500  但是数据是有的 看了一下别人的解决办法  结合自己的问题  总结了一下问题1.将debug 关掉  false2.跨域问题肯定是要解决的  比较简单就不说了3.将runtime的权限打开  可写必须打开  chmod -R 777 runtime参考这个文章 http://www.thinkphp.cn/topi...
ajax调用php时,php执行eval导致服务器500错误
通过ajax调用php接口时,在windows下一切正常,linux下返回500错误。 经排查是php在执行eval时会产生一个bug,虽然一切运行正常,但是服务器仍会返回500错误。 这就导致ajax无法顺利执行下去。 使用try 或 @ 都无法屏蔽此问题,使用下面方法可以解决:             /* 解决eval返回500错误的bug */             i
Ajax访问后台500 (Internal Server Error)问题
ajax访问后台action,页面报POST http://localhost:8080/group/queryRefundOrders.do 500 (Internal Server Error)问题 后台控制台没有报错,使用的google浏览器报上面错误,检查发现js代码没有问题,并且后台代码也没有问题。接收mybaties 返回的数据RefundOrderVO也实现了Serializabl
ajax返回json格式 报500 Internal Server Error
今天用ajax返回json格式的时候后台能查询出数据只是再返回到ajax中的时候报500Internal Server Error,用火狐具体调试了一些错误信息,一下是部分错误信息: nested exception is com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class or
Jquery ajax只执行error回调的原因
根据官方文档的解释,他们对datatype:json及其严格,必须严格遵守json字符串格式,否则只能调用error回调 true:{"msg","success"} false:{msg:success}