我不确定我是否会以错误的方式解决这个问题,而且如果有人可以指出我的错误或让我知道我是否走错了路,我无法找到我想要的东西那简直太好了。
我正在尝试使用$.post('example.php',data1:foo,data2:bar})
将表单数据发布到另一个文件。 example.php页面包含INSERT sql查询。
执行此操作后,example.php页面将发布的数据插入到数据库中,如何返回pass / fail / ANYTHING?
我已经尝试了我在这里和其他网站上看到的各种$.post('..php',{data..},function(data){})
示例,但是成功函数似乎无论如何返回,即使INSERT语句中存在明显的问题。
以下是我的代码示例:
//validate transaction form
$("#frmTransaction").validate({
submitHandler: function(element) {
hidePageMessages();
var invnum = document.frmTransaction.invnum.value;
var recnum = document.frmTransaction.recnum.value;
var status = document.frmTransaction.status.value;
$.post("tran_add.php",
{
invnum:invnum,
recnum:recnum,
status:status
},
function(data){
my_function(data)
}
);
},
rules: {
description: "required",
amount: "required",
account: "required",
category: "required",
payee: "required"
},
errorClass:"errorinline",
validClass:"valid"
});
function my_function(data){
alert(data);
}
所以,如果tran_add.php中的sql语句成功执行,那么我只需执行my_function,它将向用户显示为“pass”消息。 tran_add.php是否需要执行除sql语句以外的任何操作,即返回成功或其他什么?或者,我是否以错误的方式解决这个问题?
提前感谢任何帮助,建议,在头脑后方留下遗漏的东西等等
答案 0 :(得分:1)
你应该这样做,例如:
$mySqlInsertStatement = "insert statement"
If($mySqlInsertStatement) //to check for successful insert
Echo 0
Else
Echo 3
(当然如果陈述是小写等)
然后在成功陈述中,你应该说:
If(success == 0)
//success
Else
//not success
答案 1 :(得分:0)
Inside Function.Use $.each();
function(data){
$.each(data,function(key,value){
alert(key+""+value);
});
}
答案 2 :(得分:0)
您只需回显成功的结果,jquery将为您完成剩下的工作。
我不是一个真正有经验的专业人士,我不知道幕后发生了什么。在我看来,它是这样的:
当php回应成功的结果时,jquery / ajax会看到在执行脚本后在网页中发布了某些内容,并了解该消息意味着成功,并执行其成功功能。如果执行过早停止,并且没有任何回显或执行'过早'死亡或错误消息在else子句中回显,则表示执行中存在错误,并且将不会运行成功函数。
希望有人可以更好地解释幕后发生的事情。
无论如何,问题的实际情况是如果你在脚本末尾的if子句中回显“执行成功”这样的消息,那么你的js成功函数才会被执行。
答案 3 :(得分:0)
我很确定只要服务器有任何非错误响应(HTTP Code 400/404/500 /等),就会调用成功函数。所以,你有两个选择:
1)让你的php app如果插入不成功则设置错误:
<?php
http_response_code(502);
?>
2)让php返回成功函数可以解析的一些数据,以了解发生了什么(如果可以,我建议返回json),例如:
{"result":"error" "details":"Database Insert failed..."}
或者
{"result":"success", "new_id":42}
我倾向于将这些方法结合起来。
答案 4 :(得分:0)
$.post()
会根据您发送给data
的{{1}}返回数据。在url
上,您需要以下条件:
tran_add.php
测试你应该改变
$mysqli->query("INSERT table (column1,column2) VALUES ('value1','value2')");
if($mysqli->affected_rows > 0){
// now return your stuff
echo json_encode(array('test' => 'worked', 'see' => 'now'));
}
到
function my_function(data){
alert(data);
}