我正在建立一个简单的论坛,我有一个用户详细信息页面,其中包含两个文本字段,一个用于用户的传记,另一个用于他的兴趣。 当用户点击保存图标时,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”。
答案 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/