触发jquery处理程序时,Ajax不调用服务器端函数

时间:2017-06-21 15:46:46

标签: php jquery ajax

我正在建立一个简单的论坛,我有一个用户详细信息页面,其中包含两个文本字段,一个用于用户的传记,另一个用于他的兴趣。 当用户点击保存图标时,jquery上的处理程序会调用ajax调用以使用传记/兴趣的新值更新数据库,但是根本没有调用ajax调用而我不能弄清楚,因为我没有发现代码有任何问题,如果有人可以看一下它会让人感到沮丧。

这是textarea:

 <textarea rows="4" cols="50" id="biography" readonly><?php if($info['bio'] == "") echo "Não existe informação para mostrar";
            else echo $info['bio']; ?></textarea>

以下是用户点击的图标:

<li style="display:inline;" class="infoOps-li"><img class="info-icons"  id="save1" src="assets/icons/save.png" alt=""></li>

这是ajax调用的问题:

$("#save1").click(function(){
  var bio = $("#biography").val();
  alert(bio); //this fires up
$.ajax({
  url:"assets/phpScripts/userBioInterest.php", //the page containing php script
  type: "post", //request type,
  dataType: 'json',
  data: {functionName: "bio", info:bio},
  success:function(result){
    alert(result.abc); //this doesn't fire
       }
     });
  $("#biography").prop("readonly","true");
});
  

我知道正在调用jquery处理程序,因为执行了第一个警报。 ajax成功函数的警报不是,所以我假设没有处理ajax调用。

在php文件中我有这个:

function updateBio($bio)
{
    $user = $_SESSION['userId'];
    $bd = new database("localhost","root","","ips-connected");
    $connection = $bd->getConnection();
    if($bio == "")
    {
        echo json_encode(array("abc"=>'empty'));
        exit();
    }
     if($stmt = mysqli_prepare($connection,"UPDATE users SET biografia = ? WHERE user_id = ?"))
      {
         mysqli_stmt_bind_param($stmt,'si',$bio,$user);
         mysqli_stmt_execute($stmt);
         mysqli_stmt_close($stmt);
         echo json_encode(array("abc"=>'successfuly updated'));
      }

    $bd->closeConnection();

}

if(isset($_POST['functionName']))
{
$function = $_POST['functionName'];
echo $function;
if(isset($_POST['info']))
$info = $_POST['info'];

if($function == "bio")
{
    updateBio($info);
}
else if($function == "interest")
{
    updateInterests($info);
}
}

任何人都可以了解为什么不调用ajax调用? 谢谢

  

编辑:按照建议将“function”更改为json数据对象中的“functionName”。

1 个答案:

答案 0 :(得分:-1)

可能的问题是错误地解析PHP输出(例如由于PHP错误)。您正在将输出读取为JSON,因此如果输出不是JSON,则不会触发成功回调。

$("#save1").click(function(){
    var bio = $("#biography").val();
    alert(bio); //this fires up
    $.ajax({
        url:"assets/phpScripts/userBioInterest.php",
        type: "post", //request type,
        dataType: 'json',
        data: {function: "bio", info:bio},
        success:function(result){
            alert(result.abc); //this doesn't fire
        },
        error: function(result){
            alert("An error has occurred, check the console!");
            console.log(result);
        },
    });
    $("#biography").prop("readonly","true");
});

尝试使用此代码,并检查是否在控制台上打印了错误。 您也可以使用complete,请点击此处:http://api.jquery.com/jquery.ajax/