AJAX:如何发回 success/error 消息
AJAX: How to send back a success/error message
这是我 Ajax 迈出的第一步,我已经在努力了。我有一个插入数据库的请求,但目前我的代码表现得就像所有请求都成功一样,但我希望能够在更新数据库时处理错误。我想根据 MYSQL 响应向 alert() 发送一条 success/error 消息。
我的 Ajax 电话:
$("a.bgbtb").click(function(){
var btnid = $(this).attr("id").split('newbudbtn-')[1];
var newbudget = $("INPUT[id=newbud-"+btnid+"]").val();
var platform = $("span#"+btnid).text();
$.ajax({
url:"campbdgtedit.php",
method:"POST",
data:{platform:platform, btnid:btnid, newbudget:newbudget},
success:function(data){
myAlertTop();
}
});
});
campbdgtedit.php:
$query = "INSERT INTO campaigns (camp_budget, camp_campaignid) VALUES ('".$_POST['newbudget']."', '".$_POST['btnid']."')";
if ($conn->query($query) === TRUE) {
echo "Success<br/>";
} else {
echo "Error: " . $query . "<br>" . $conn->error;
}
如果查询中有错误,我如何捕捉并相应地处理我的警报?我已经尝试了很多我在这里找到的解决方案,但我似乎无法让它们发挥作用。
如果我没理解错,你需要从JS端的php端分析"echo",才能提示相应的错误。
使用此处返回的"data":
success:function(data){
myAlertTop();
}
并执行以下操作:
success:function(data){
myAlertTop(data);
}
function myAlertTop(replyfromPHPside)
{
if (replyfromPHPside =="abc")
{
alert('..');
}
else
{
...
}
}
我认为最好的方法是从 PHP 中回显一个 json-string 并且 "catch" 在 javascript 中的响应是这样的:
campbdgtedit.php:
$query = "INSERT INTO campaigns (camp_budget, camp_campaignid) VALUES ('".$_POST['newbudget']."', '".$_POST['btnid']."')";
$arr = array();
if ($conn->query($query) === TRUE) {
$arr['response'] = true;
} else {
$arr['response'] = false;
}
echo json_encode($arr);
Javascript:
$("a.bgbtb").click(function(){
var btnid = $(this).attr("id").split('newbudbtn-')[1];
var newbudget = $("INPUT[id=newbud-"+btnid+"]").val();
var platform = $("span#"+btnid).text();
$.ajax({
url:"campbdgtedit.php",
method:"POST",
data:{platform:platform, btnid:btnid, newbudget:newbudget},
success:function(data){
if (data.response == 'true') {
alert('DB success');
}
else {
alert('DB fail');
}
}
});
});
我建议从您的 PHP 代码返回 JSON
,如果您在 [=] 上使用 dataType: 'json'
,这可以直接解释为 JavaScript 中的一个对象21=] 呼叫。例如:
if ($conn->query($query) === TRUE) {
echo json_encode(array('success' => true));
} else {
echo json_encode(array('success' => false,
'message' => "Error: Insert query failed"
)
);
}
请注意,通常将查询详细信息和连接错误传回给最终用户是不安全的,最好传回一条通用消息并将实际错误记录到文件或其他位置。
在你的 JavaScript:
$("a.bgbtb").click(function(){
var btnid = $(this).attr("id").split('newbudbtn-')[1];
var newbudget = $("INPUT[id=newbud-"+btnid+"]").val();
var platform = $("span#"+btnid).text();
$.ajax({
url:"campbdgtedit.php",
method:"POST",
data:{platform:platform, btnid:btnid, newbudget:newbudget},
dataType: 'json',
success:function(data){
if (data.success) {
// all good!
myAlertTop();
}
else {
// problems
alert(data.message);
}
}
});
});
这是我 Ajax 迈出的第一步,我已经在努力了。我有一个插入数据库的请求,但目前我的代码表现得就像所有请求都成功一样,但我希望能够在更新数据库时处理错误。我想根据 MYSQL 响应向 alert() 发送一条 success/error 消息。
我的 Ajax 电话:
$("a.bgbtb").click(function(){
var btnid = $(this).attr("id").split('newbudbtn-')[1];
var newbudget = $("INPUT[id=newbud-"+btnid+"]").val();
var platform = $("span#"+btnid).text();
$.ajax({
url:"campbdgtedit.php",
method:"POST",
data:{platform:platform, btnid:btnid, newbudget:newbudget},
success:function(data){
myAlertTop();
}
});
});
campbdgtedit.php:
$query = "INSERT INTO campaigns (camp_budget, camp_campaignid) VALUES ('".$_POST['newbudget']."', '".$_POST['btnid']."')";
if ($conn->query($query) === TRUE) {
echo "Success<br/>";
} else {
echo "Error: " . $query . "<br>" . $conn->error;
}
如果查询中有错误,我如何捕捉并相应地处理我的警报?我已经尝试了很多我在这里找到的解决方案,但我似乎无法让它们发挥作用。
如果我没理解错,你需要从JS端的php端分析"echo",才能提示相应的错误。
使用此处返回的"data":
success:function(data){
myAlertTop();
}
并执行以下操作:
success:function(data){
myAlertTop(data);
}
function myAlertTop(replyfromPHPside)
{
if (replyfromPHPside =="abc")
{
alert('..');
}
else
{
...
}
}
我认为最好的方法是从 PHP 中回显一个 json-string 并且 "catch" 在 javascript 中的响应是这样的:
campbdgtedit.php:
$query = "INSERT INTO campaigns (camp_budget, camp_campaignid) VALUES ('".$_POST['newbudget']."', '".$_POST['btnid']."')";
$arr = array();
if ($conn->query($query) === TRUE) {
$arr['response'] = true;
} else {
$arr['response'] = false;
}
echo json_encode($arr);
Javascript:
$("a.bgbtb").click(function(){
var btnid = $(this).attr("id").split('newbudbtn-')[1];
var newbudget = $("INPUT[id=newbud-"+btnid+"]").val();
var platform = $("span#"+btnid).text();
$.ajax({
url:"campbdgtedit.php",
method:"POST",
data:{platform:platform, btnid:btnid, newbudget:newbudget},
success:function(data){
if (data.response == 'true') {
alert('DB success');
}
else {
alert('DB fail');
}
}
});
});
我建议从您的 PHP 代码返回 JSON
,如果您在 [=] 上使用 dataType: 'json'
,这可以直接解释为 JavaScript 中的一个对象21=] 呼叫。例如:
if ($conn->query($query) === TRUE) {
echo json_encode(array('success' => true));
} else {
echo json_encode(array('success' => false,
'message' => "Error: Insert query failed"
)
);
}
请注意,通常将查询详细信息和连接错误传回给最终用户是不安全的,最好传回一条通用消息并将实际错误记录到文件或其他位置。
在你的 JavaScript:
$("a.bgbtb").click(function(){
var btnid = $(this).attr("id").split('newbudbtn-')[1];
var newbudget = $("INPUT[id=newbud-"+btnid+"]").val();
var platform = $("span#"+btnid).text();
$.ajax({
url:"campbdgtedit.php",
method:"POST",
data:{platform:platform, btnid:btnid, newbudget:newbudget},
dataType: 'json',
success:function(data){
if (data.success) {
// all good!
myAlertTop();
}
else {
// problems
alert(data.message);
}
}
});
});