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



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

这是文本区域:

<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 调用的 jeQuery:

$("#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 调用? 谢谢

编辑:按照建议将json数据对象中的"函数"更改为"函数名称"。

一个可能的问题是由于 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/

最新更新