繁体   English   中英

检查警报框是否在使用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请求发送回一个结果,并在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函数从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返回的值,并决定是否需要显示成功警报或向控制台发送错误消息(或执行您想做的任何事情...)。

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()允许从JS返回容易访问的对象,并且还允许您轻松设置和显示错误消息,以防返回错误。

希望能帮助到你 !

PHP不知道是否已显示警报,因为在javascript中,alert()函数没有返回值,也没有事件可用于向服务器发送ajax请求点击确认。

一种解决方案是在$ .ajax()成功事件内使用Confirm()命令,如果用户单击“确定”或“取消”,该事件将发送anothe ajax请求。

像这样

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...
        } 
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM