使用 AJAX 检查警告框是否显示在 PHP 中
Check if alert box was shown in PHP using AJAX
我正在使用 AJAX 将数据发送到 PHP 文件,根据发送的数据,显示或不显示 alert()
。
在 AJAX 的 success
函数中,如何检测是否显示了警告框?
var called = $("#called").val();
$.ajax({
type: "POST",
url: "send.php",
data: "name=" + called,,
success: function(data) {
if(alert box was shown) {
// something happens
}else{
// alert box wasn't shown, something else happens.
}
}
});
send.php
:
<?php
if($_POST['name'] == 'john') {
echo'
<script>
alert("Correct name");
</script>
';
}
最好从 ajax 请求发回结果,并且 show/don 不在 success
回调中显示警报:
$.ajax({
type: "POST",
url: "send.php",
data: "name=" + called,,
success: function(data) {
if ( data == "show" ) {
// something happens
alert("Correct name");
} else {
// alert box wasn't shown, something else happens.
}
}
});
在您的服务器上:
if ( $_POST['name'] == 'john' ) {
echo "show";
}
您可以使用 json_encode()
php 函数来 return 来自 php 的数据。
这将是一个更好的方法:
PHP :
if (!isset($_POST['name'] || empty($_POST['name']) {
die(json_encode(array('return' => false, 'error' => "Name was not set or is empty")));
} elseif ($_POST['name'] == "John") {
die(json_encode(array('return' => true)));
} else {
die(json_encode(array('return' => false, 'error' => "Name is different than John.")));
}
此时,您将被允许检查来自 JS 的 returned 值并决定是否需要显示成功警报或向控制台发送错误消息(或做任何您想做的事) ...).
JS :
var called = $("#called").val();
$.ajax({
type: "POST",
url: "send.php",
dataType: "JSON", // set the type of returned data to json
data: {name: called}, // use more readable syntaxe
success: function(data) {
if (data.return) { // access the json data object
alert("Congrats ! Your name is John !");
} else {
console.log("Sorry, something went wrong : " + data.error);
}
}
});
因此,json_encode()
允许 return 从 JS 轻松访问对象,并且还允许您在 return 为假的情况下轻松设置和显示错误消息。
希望对您有所帮助!
PHP 不知道是否显示了警报,因为在 javascript 中,alert() 函数没有 return 值,也没有可用于发送警报的事件ajax 向服务器请求点击确认。
一个解决方案是在 $.ajax() 的成功事件中使用 confirm() 命令,如果用户单击 "ok" 或"cancel".
像这样
var called = $("#called").val();
$.ajax({
type: "POST",
url: "send.php",
data: "name=" + called,
success: function(data) {
if (data == "show") {
var clicked = confirm("Correct name");
if (clicked == true || clicked == false) {
$.ajax({
url: "send.php?clicked=1",
});
}
}
else {
// Whatever to do than...
}
}
});
我正在使用 AJAX 将数据发送到 PHP 文件,根据发送的数据,显示或不显示 alert()
。
在 AJAX 的 success
函数中,如何检测是否显示了警告框?
var called = $("#called").val();
$.ajax({
type: "POST",
url: "send.php",
data: "name=" + called,,
success: function(data) {
if(alert box was shown) {
// something happens
}else{
// alert box wasn't shown, something else happens.
}
}
});
send.php
:
<?php
if($_POST['name'] == 'john') {
echo'
<script>
alert("Correct name");
</script>
';
}
最好从 ajax 请求发回结果,并且 show/don 不在 success
回调中显示警报:
$.ajax({
type: "POST",
url: "send.php",
data: "name=" + called,,
success: function(data) {
if ( data == "show" ) {
// something happens
alert("Correct name");
} else {
// alert box wasn't shown, something else happens.
}
}
});
在您的服务器上:
if ( $_POST['name'] == 'john' ) {
echo "show";
}
您可以使用 json_encode()
php 函数来 return 来自 php 的数据。
这将是一个更好的方法:
PHP :
if (!isset($_POST['name'] || empty($_POST['name']) {
die(json_encode(array('return' => false, 'error' => "Name was not set or is empty")));
} elseif ($_POST['name'] == "John") {
die(json_encode(array('return' => true)));
} else {
die(json_encode(array('return' => false, 'error' => "Name is different than John.")));
}
此时,您将被允许检查来自 JS 的 returned 值并决定是否需要显示成功警报或向控制台发送错误消息(或做任何您想做的事) ...).
JS :
var called = $("#called").val();
$.ajax({
type: "POST",
url: "send.php",
dataType: "JSON", // set the type of returned data to json
data: {name: called}, // use more readable syntaxe
success: function(data) {
if (data.return) { // access the json data object
alert("Congrats ! Your name is John !");
} else {
console.log("Sorry, something went wrong : " + data.error);
}
}
});
因此,json_encode()
允许 return 从 JS 轻松访问对象,并且还允许您在 return 为假的情况下轻松设置和显示错误消息。
希望对您有所帮助!
PHP 不知道是否显示了警报,因为在 javascript 中,alert() 函数没有 return 值,也没有可用于发送警报的事件ajax 向服务器请求点击确认。
一个解决方案是在 $.ajax() 的成功事件中使用 confirm() 命令,如果用户单击 "ok" 或"cancel".
像这样
var called = $("#called").val();
$.ajax({
type: "POST",
url: "send.php",
data: "name=" + called,
success: function(data) {
if (data == "show") {
var clicked = confirm("Correct name");
if (clicked == true || clicked == false) {
$.ajax({
url: "send.php?clicked=1",
});
}
}
else {
// Whatever to do than...
}
}
});