使用PHP和ajax制作alert()

Making an alert() with PHP and ajax

本文关键字:alert 制作 ajax PHP 使用      更新时间:2023-09-26

我有一个ajax函数,它可以向我的PHP文件提交一些数据。在我的PHP文件中,我会检查它是否处理了这些数据,然后我会尝试发出警报来说明一些事情。不过,我无法收到任何警报。所有发生的事情都在控制台->网络->提交。php->响应显示应该发出警报的javascript。

这是我的Ajax,我知道它很有效:

$('#submit').click(function() {
    if(selectedImageArray.length <= 10){
  $.ajax({
    method: "POST",
    url: "submit.php",
    data: {selectedImageArray: selectedImageArray}
  }).done(function( msg ) {
    //alert( "Data Saved: " + selectedImageArray );
  });   }else{
        alert( "You can only trade up to 10 items at once." );
    }
});

然后在submit.php中,我做了一些检查,并得到了这个:

        if($QueueCount == 1){
            Echo '<script language="javascript">';
            Echo 'alert( "You already have an active trade, check your Steam profile.");';
            echo '</script>';
        }else{
            Echo '<script language="javascript">';
            Echo 'alert("You are currently in the trade Queue, you should receive a trade request soon.");';
            echo '</script>';
        }

这应该会发出警报,但它只是将<script language="javascript">alert( "You already have an active trade, check your Steam profile.");</script>输出到网络选项卡中,就像我说的那样。

如何从PHP文件中弹出警报?

如果不在ajax回调中输出javascript,您将无法从php输出javascript。

最简单的方法是用php返回字符串,并将输出处理为javascript。

类似于:

if($QueueCount == 1){
        Echo "You already have an active trade, check your Steam profile.";
    }else{
        Echo "You are currently in the trade Queue, you should receive a trade request soon.";
    }

对于javascript

$('#submit').click(function() {
  if(selectedImageArray.length <= 10){
      $.ajax({
        method: "POST",
        url: "submit.php",
        data: {selectedImageArray: selectedImageArray}
      }).done(function( msg ) {
        alert(msg);
      });   
  }else{
        alert( "You can only trade up to 10 items at once." );
    }
});

您的javascript代码必须如下所示:

$('#submit').click(function() {  
  if(selectedImageArray.length <= 10){
    $.ajax({
      method: "POST",
      url: "submit.php",
      data: {selectedImageArray: selectedImageArray},
      success: function(data,status){
        eval(data)
      }
    });   
  }else{
    alert( "You can only trade up to 10 items at once." );
  }
});

您的php代码不应该声明脚本标记:

    if($QueueCount == 1){
        echo 'alert( "You already have an active trade, check your Steam profile.");';
    }else{
        echo 'alert("You are currently in the trade Queue, you should receive a trade request soon.");';
    }

请确保这是php文件的唯一输出。

此外,在投入生产之前,这段代码还需要一些改进,例如回调服务器端处理的错误,检查ajax是否完全没有由于网络问题和XSS保护而失败,等等。