使用AJAX在网页上显示来自服务器的响应


Show response from server on web page using AJAX?

我正在使用HTML、PHP和JavaScript开发一个web应用程序。我找到了一种方法来调用PHP方法,这些方法使用AJAX从客户端运行数据库操作(HTML和JS),下面是一个示例:

    if (confirm('Sure you want to do that?')) {
      $.ajax({
        url: "myScripts.php",
        type: "POST",
        data: {
          paramForOperation: myParam,
          option: "doAction1"
        },
        cache: false,
        success: function(response) {
          //Here I reload or load another page after server is done
          window.open("myPage.php", "_self");
        }
      });
    }

因此,在这里,我使用在数据库上执行INSERT/DELETE/WHATEVER的脚本来调用php文件。它工作得很好,但如果因为索引已经存在或任何其他原因而无法插入呢?如果某些类型的数据是错误的,而我无法插入它,该怎么办?我知道我可以使用PHP在服务器端验证这一点,但我如何返回一条消息,说"操作完成"或"你应该在X字段上使用数字"?

我想到了类似alert(response);的东西,但它会返回什么?我的PHP函数中的echo($msg);?有没有一种方法可以在AJAX中发送关于response的结果消息?

谢谢你的帮助。

PHP脚本的任何输出都将作为响应接收。记住,PHP脚本在服务器上运行,只生成输出。PHP代码本身永远不会到达客户端。

因此,您可以直接回显一条消息,并在"响应"中提醒它。

更进一步,您可以返回一小段可以解析的JSON或XML,其中可以包含错误消息和一些错误代码,因此脚本也可以对此做出响应,并可能更改其行为(例如,如果插入成功,则将新数据添加到页面)。

当然,您可以考虑返回其他HTTP状态代码,而不是总是从PHP返回代码200(意思是OK),因此代码已经指示出是否出了问题。根据状态代码的不同,jQuery将执行成功或错误处理程序,因此很容易为不同的情况制作不同的处理程序。

让您的服务器使用适当的HTTP状态代码和有意义的错误消息进行响应。使用ajax调用的error函数。

$.ajax({
    url: "myScripts.php",
    type: "POST",
    data: {},
    success: function(response) {
      /* no error occured, do stuff... */
    }
    error: function(jqXHR, textStatus, errorThrown) {
      /* handle the error, add custom error messages to any DOM objects, ... */
      console.log(textStatus, errorThrown);
}

一些文档:$.ajax和HTTP状态代码