Ajax JSON请求总是转到.fail回调

时间:2015-08-23 20:40:09

标签: javascript php jquery ajax json

它始终转到.fail路径..即使PHP文件只是或打印为null;

这是我现在的代码。

$.ajax({
  url: 'ajax/getValues.php',
  type: 'post',
  dataType: 'json',
  data: { clickedId: "clickedId" },
   })
.done(function(datos){
  alert("OK");
  $("#titulo").val(datos.titulo);
  $("#precio").val(datos.precio);
})
.fail(function() {
  alert("fail");

})

})

PHP请求:

    $con = mysqli_connect('localhost','root','','clarodeluna');

    $id=$_POST['clickedId'];
    $sql = "SELECT titulo, precio FROM coleccion WHERE id=$id";

    $result=$con->query($sql);

    while($row = mysqli_fetch_assoc($result)){
        $titulo = $row['titulo'];
        $precio = $row['precio'];

        $datos = array(
            "titulo" => $titulo,
            "precio" => $precio,    
            )
    };


    header('Content-Type: application/json');
    print json_encode($datos);

如果我将dataType从json更改为html,它不会转到.fail回调函数..所以我猜它必须是JSON格式,但我重复一遍,如果我只是在php中写print null或print {}用失败的文件记录它仍然是

2 个答案:

答案 0 :(得分:0)

您遇到语法问题,并且在输出任何内容后无法设置标题

如果您在浏览器开发工具网络中检查请求,则很可能您当前看到500错误状态

尝试更改为以下内容:

{
  "errors": [
    {
      "code": 32,
      "message": "Could not authenticate you."
    }
  ]
}

这都假设您的ajax数据中正确定义了 $datos = array( "titulo" => $titulo; "precio" => $precio; );// added `;` header('Content-Type: application/json');// header before output echo json_encode($datos);

使用浏览器开发工具检查实际请求作为第一行调试,以查看状态,发送/返回的内容等

答案 1 :(得分:0)

最后我明白了!

  $.ajax({
    url: 'ajax/getValues.php',
    type: 'post',
    dataType: 'json',
    data: { clickedId: "clickedId" }, **THIS WAS WRONG!**
   })

应该是

data: { "clickedId": clickedId }

谢谢大家!