gpt4 book ai didi

php - jquery ajax 结果消息

转载 作者:行者123 更新时间:2023-11-29 14:47:41 25 4
gpt4 key购买 nike

我对 php 脚本进行了 ajax 调用,当用户提交数据字符串作为条目时,该脚本会使用新记录更新我的 MySQL 数据库。 PHP 的一部分是 if/else,它将检查条目是否重复。我可以阻止重复项更新数据库,但我不知道如何发回一条“错误”消息,提示“该记录已存在”...这是我的 jquery: [脚本] $(函数(){

    $(".entry_button").click(function() 
{
var element = $(this);
var boxval = $("#entry").val();
var dataString = 'entry='+ boxval;
if(boxval=='') {
alert("Please Enter Some Text");
} else {

$("#flash").show();
$("#flash").fadeIn(400).html('<img src="images/loading.gif" align="absmiddle">&nbsp;<span class="loading">Broifying It...</span>');
$.ajax({
type: "POST",
url: "update_data.php",
data: dataString,
cache: false,
success: function(html){
$("ol#update").prepend(html);
$("ol#update li").slideDown("slow");
document.getElementById('entry').value='';
$("#flash").hide();
}

});
}
return false;
});
});
[/script]

这是我更新数据库的 php 脚本 (update_data.php):

[php]
include('db.php');
if(isset($_POST['entry']))
{
$date_created = date('Y-m-d H:i:s');
$entry = $_POST['entry'];
$query = "SELECT COUNT(*) AS count FROM table WHERE entry = '$entry'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if ($row['count'] == 0) {
mysql_query("insert into table (entry,date_created) values ('$entry','$date_created')");
$sql_in= mysql_query("SELECT entry,id FROM table order by id desc");
$r=mysql_fetch_array($sql_in);
$newentry=$r['newentry'];
$id=$r['id'];
?>
<li class="entry bar<?php echo $id; ?>">
<div class="thebro"><span><?php echo $newentry; ?></span></div>
<div class="hr"></div>
<div class="utility-left"><span class="share"><a href="#" title="Share">share</a></span> | <span class="time">days ago</span></div>
<div class="utility-right"><span class="comments">COMMENTS</span> | <span class="like">LIKE</span></div>
</li>
<?php
} else {
$error = "Sorry, that record already exists";
}

}
[/php]

我希望能够从 php 脚本中吐出 $error 变量,以便在 ajax 调用中发回并显示在 HTML 的元素中。我已经在 google 上搜索了 ajax 错误消息,但它们都与 header 错误有关,而不是验证错误消息。我也没有使用 json_encode,除非有人想重做上面的 jquery block ,以便将其作为 json 数据发送。

任何想法都会很棒!

最佳答案

如果 PHP 中产生错误,我希望它由 jquery ajax 对象的 error 方法处理,而不是通过发送正常的 HTTP 200 响应并在响应文本上标记一些错误来“伪造”它。

当 PHP 返回 HTTP 500 时,ajax 错误处理程序不会捕获“responseText”。错误处理程序接收 XHR 对象、“错误”状态和“内部服务器错误”错误消息。

我试图操纵错误消息..

header( 'HTTP/1.1 500 My Custom Error Message' );

但这并没有奏效。

所做的工作是这样的:

function errorHandler( $number, $message, $file, $line ) {
$data = array(
'message' => $message,
'line' => $line,
'file' => $file,
'trace' => debug_backtrace()
);

header( 'Debug: ' . json_encode( $data, true ) );
}

这将使 PHP 返回 HTTP 500,并在额外 header 中包含您的自定义详细信息。

要从 ajax 错误处理程序访问自定义详细信息:

$.ajax({
success: function( response ) {
// ...
},
error: function( XHR, status, errorThrown ) {
$.each( XHR.getAllResponseHeaders().split( '\n' ), function( i, header ) {
if ( header.substr( 0, 7 ) == 'Debug: ' ) {
var error = JSON.parse( header.substr( 7 ) );
console.log( error );
}
});
}
});

关于php - jquery ajax 结果消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6552301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com