Jquery + Ajax,Params有数据,但是响应说没有数据

时间:2018-08-31 08:37:35

标签: javascript php jquery ajax asynchronous

我有以下脚本:

$("#spid").blur(function() {
    $.ajax({
       url: 'getsponsor.php',
       type: "POST",
       dataType:'json',
       data: ({ spid: $("#spid").val() }) ,
       contentType: 'application/json; charset=utf-8',
       success: function (result) {
           $("#sponname").text(result);
       },
       error: function () {
           $("#sponname").text("Cannot fetch the sponsor name.");
       }
   }); 
});
  

注意:#sponname是一个标签。

以下是getsponsor.php的php代码:

if(!isset($_POST['spid']) || empty($_POST['spid']))
    echo json_encode("No Data");
else {
    $spid=$_POST['spid'];
    $stmt = $con->prepare("SELECT name FROM users WHERE id=?");
    $stmt->bind_param("s",$spid);
    $stmt->execute();
    $stmt = $stmt->get_result();
    if ($stmt->num_rows >0) {
        $row = $stmt->fetch_object();
        echo json_encode($row->name);
    }
    else {
        echo json_encode("No Records");
    }
}

当我检查页面并转到 Network-> Params 时,我会从文本框中获得正确的值:

  

spid = 1125468

但是,当我转到网络->响应时,会收到以下消息

  

“无数据”

请告诉我我在做什么错?

1 个答案:

答案 0 :(得分:4)

摆脱这一行:

contentType: 'application/json; charset=utf-8',

正在将数据发送为URL编码,而不是JSON。 jQuery会自行发送正确的Content-type标头。