Php jQuery ajax在使用链接提交表单时失败
在这个序列中,我在表单中得到的内容现在正在更新数据库。但是,当我单击此链接时Php jQuery ajax在使用链接提交表单时失败,php,forms,jquery,Php,Forms,Jquery,在这个序列中,我在表单中得到的内容现在正在更新数据库。但是,当我单击此链接时 <a onclick="doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a> 我希望获得成功回调,以便在保存数据时向用户显示一条好消息 然而,如果我只是这样做 <a href="#" id="commit-changes" class="uibutton submit_form"
<a onclick="doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>
我希望获得成功回调,以便在保存数据时向用户显示一条好消息
然而,如果我只是这样做
<a href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>
<script>
$(function(){
$('#commit-changes').click(function(e){
e.preventDefault();
$.ajax({
type: "POST",
data: $("#validation").serialize(),
cache: false,
url:"modules/user/updateuser.php",
success : function(data){
$("#response-update").html(data);
},
error: function(data){
$("#response-update").html("Erro na submissão");
}
});
});
});
</script>
$(函数(){
$(“#提交更改”)。单击(函数(e){
e、 预防默认值();
$.ajax({
类型:“POST”,
数据:$(“#验证”).serialize(),
cache:false,
url:“modules/user/updateuser.php”,
成功:功能(数据){
$(“#响应更新”).html(数据);
},
错误:函数(数据){
$(“#响应更新”).html(“Erro na submissão”);
}
});
});
});
“提交”根本不起作用
我怎样才能解决这个问题?这部分已经用了好几天了!:(
编辑表单的HTML(这也是在页面请求中加载的响应)
$response.='
实用护墙板
诺梅因塞拉奥修诺姆酒店
';
$response.='
EmailInsira o seu电子邮件
';
$response.='
许可证
“.$role。”
实用动植物
“.$activo”
开/关
林帕尔·福穆拉里奥
您是否已将jQuery代码放入文档中。准备好处理程序了吗
jQuery(function ($) {
// put jQuery here
});
第一个示例在没有document.ready
(但没有太多意义,因为您无论如何都在使用jQuery)。第二个示例不起作用。为了按预期运行doUpdate()函数,请尝试以下操作
将锚定标记onclick属性修改为
<a onclick="return doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>
jquery ajax成功/错误回调将根据是否收到POST请求而触发,它与您发布到的文件中实际发生的事情无关。奇怪的是,您会得到错误回调并更新数据库,但您可以尝试让您发布的php文件给出响应并然后根据该响应运行成功/错误
在php文件中,可以有如下内容:
$testQuery = "QUERY STRING HERE";
if(!mysql_query($testQuery))
{
echo "error";
exit;
}
else
{
echo "sucess";
exit;
}
然后在doUpdate函数中,您可以基于html运行成功回调和输出
function doUpdate()
{
e.preventDefault();
$.ajax({
type: "POST",
data: $("#validation").serialize(),
cache: false,
url:"modules/user/updateuser.php",
success : function(data){
if(data == "success")
{
$("#response-update").html(data);
}
else
{
$("#response-update").html("Erro na submissão");
}
}
});
}
你也可以使用“complete”回调,即使没有收到帖子,它也会触发,它不会告诉你除了函数已经运行之外的任何事情,尽管我有一个解决方案。不是最漂亮的,因为我想要一个纯jQuery解决方案,但是,它工作得很好
只是需要改变一下
<a onclick="doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>
到
现在它与success回调函数一起工作
谢谢你在这方面提供的帮助。是的,我做了,但也不走运!结果是一样的。它不提交表单。你可以检查error
变量中的内容。在error
回调中设置断点,然后检查error.responseText
(以及其他属性),您可能会获得更多有关阻止事件发生的信息post@MilkyWayJoe~z~我的印象是,AJAX调用一开始根本没有启动。至少,这是我从问题中得出的结论。如果以纯jQuery方式进行调用,它不会启动。如果调用onclick并将其包装到该函数中,它会提交,因此,AJAX调用正在工作,b但同时,它不是!:你的
标记是否与代码中的标记类似?我认为你必须指定type='text/javascript'
…你是否希望对象为json?如果是,那么尝试将contentType:'application/json'
添加到ajax调用中否,我希望HTML作为响应。你是否尝试更改url
到'/modules/user/updateuser.php'
?这没有什么不同。它也会触发错误回调如果它触发错误
回调,你应该能够检查错误中的内容。responseText
我已经有了这样的php。不过我正在使用PDO。试试{$user->updateuser($name、$email、$permissions、$active、$id_user);$response=“SUCESSO”}catch(异常$e){$response=“ERRO”。$e->getMessage();}echo$response;
$testQuery = "QUERY STRING HERE";
if(!mysql_query($testQuery))
{
echo "error";
exit;
}
else
{
echo "sucess";
exit;
}
function doUpdate()
{
e.preventDefault();
$.ajax({
type: "POST",
data: $("#validation").serialize(),
cache: false,
url:"modules/user/updateuser.php",
success : function(data){
if(data == "success")
{
$("#response-update").html(data);
}
else
{
$("#response-update").html("Erro na submissão");
}
}
});
}
<a onclick="doUpdate()" href="#" id="commit-changes" class="uibutton submit_form">Gravar</a>
<input onclick="doUpdate()" href="#" id="commit-changes" class="uibutton submit_form" value="Gravar" />