当我将鼠标悬停在任何单词上时,总会显示黑匣子。如果PHP代码返回文本,它将显示在黑匣子中(它应该)。但是我希望它返回一个错误函数,如果没有返回文本,那么我可以稍后更改黑盒子的CSS,使其宽度为0px
而不是400px
。
var x = ($(this).text());
$.ajax({
type: 'POST',
url: 'process.php',
data: { text1: x },
success: function(response){
$('#tooltip').text(response);
}
});
try
{
$db = new PDO('sqlite:ordbas.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $err)
{
echo "PDO fel $err";
}
if (isset($_POST['text1'])) {
$text1 = $_POST['text1'];
$results = $db->prepare("SELECT forord FROM words WHERE sokord='$text1'");
$results->execute();
$row = $results->fetch();
echo $row[0];
}
正如您可能已经想到的那样,我遗漏了一些非重要的代码。我希望有人能理解并帮助我!谢谢!
答案 0 :(得分:5)
以下是您可以做到的:
在您的PHP文件中
if ($query) {
echo "success"; //anything on success
} else {
die(header("HTTP/1.0 404 Not Found")); //Throw an error on failure
}
在你的jQuery AJAX SIDE上:
var x = ($(this).text());
$.ajax({
type: 'POST',
url: 'process.php',
data: { text1: x },
success:function(data) {
alert(data); //=== Show Success Message==
},
error:function(data){
alert("error occured"); //===Show Error Message====
}
});
答案 1 :(得分:2)
fail
中的$.ajax
回调用于捕获任何失败的结果。
根据服务器脚本返回的成功/失败显示/隐藏错误div。
HTML CODE:
<div class="error"><div>
<强> CSS:强>
.error {
color: red;
}
JS CODE:
//hide error before ajax call
$('.error').hide();
$.ajax(...)
.done:function(){
...
}
.fail: function(jqXHR, textStatus, errorThrown){
$('.error').text(errorThrown);
$('.error').show();
}
注意:.success()
&amp;从jquery 1.8中不推荐使用.error()
方法,因此请避免使用它们。
弃用注意:自jQuery 1.8起,不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调。要准备最终删除的代码,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。
答案 2 :(得分:1)
在你的捕获中你可以放
header('Content-type: application/json');
echo json_encode(array('Error' => 'PDO fel "$err"'));
答案 3 :(得分:0)
请尝试使用以下代码段:
var x = ($(this).text());
$.ajax({
type: 'POST',
url: 'process.php',
data: { text1: x },
success: function(response){
$('#tooltip').text(response);
},
error: function(error) {
console.log(error);
}
});
答案 4 :(得分:0)
在数组上使用PHP函数json_encode。然后,该数组将作为JSON对象('response'参数/参数)呈现给javascript。
换句话说:
PHP:
// important to tell your browser what we will be sending
header('Content-type: application/json; charset=utf-8');
... bla bla code ...
// Check if this has gone right
$success = $results->execute();
$row = $results->fetch();
$html = $row[0];
$result = [
'success' => $success,
'html' => $html,
];
print json_encode($result);
JavaScript的:
// You may now use the shorthand
$.post('process.php', { text1: x }, function(response) {
if (response.success) {
$('#tooltip').text(response.html);
} else {
... show error ...
}
});
答案 5 :(得分:0)
首先,你需要知道javascript服务器端有错误
try
{
$db = new PDO('sqlite:ordbas.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $err)
{
// Set http header error
header('HTTP/1.0 500 Internal Server Error');
// Return error message
die(json_encode(array('error' => 'PDO fel '.$err->getMessage())));
}
第二次,您需要在加载json时处理错误
var x = ($(this).text());
$.ajax({
type: 'POST',
url: 'process.php',
data: { text1: x }
})
// This will be called on success
.done(function(response){
$('#tooltip').text(response);
})
// This will be called on error
.fail(function(response){
// Error catched, do stuff
alert(response);
});
答案 6 :(得分:0)
$.ajax({
url: "file_name.php",
method: "POST",
data: $("#form_id").serialize(),
success: function () {
alert("success"); //do something
},
error: function () {
alert("doh!"); // do something else
}
});
这是处理敏感表单数据的POST请求的示例(例如,您将绑定到UPDATE或INSERT查询的数据)。我包含了serialize()函数,以便处理后端表单中的名称字段。我还删除了通过success函数传递数据。在处理您不打算展示的敏感数据或数据时,您不希望这样做。想我会在这里发布这个帖子,因为当我搜索如何使用返回错误的AJAX进行POST时,这个线程出现了。
说到返回错误,您现在想要这样做,因为PHP已经再次更新。我还建议阅读5.4+文档。
http_response_code(404);
die();
我投入了die()函数,以确保在您请求404之后没有其他任何事情发生。