【问题标题】:Appending external PHP file in jQuery在 jQuery 中附加外部 PHP 文件
【发布时间】:2019-03-14 06:14:18
【问题描述】:

我指的是一个已回答的问题here

尝试将外部 PHP 文件附加到 jQuery 并尝试load

$(".chatbox").load("./one.php");

这给了我输出;

您的成功讯息!

但令人担忧的是,这会删除正文中的所有 HTML,并且不会真正'附加'成功消息。

我尝试了以下方法。

$(".chatbox").append("./one.php");

它只是打印这个!

./one.php

我错过了什么吗?

【问题讨论】:

  • load() 替换所选元素的全部内容。听起来您只需将 .chatbox 选择器更改为较低级别的元素。如果您想追加内容,则需要使用 $.ajax() 手动检索值并使用 append() 手动检索。
  • append() 怎么知道./one.php 是一个文件?
  • 您需要$.get() 并在成功回调中使用$.append()。但是请仔细阅读所有这些功能的 jquery 文档(loadgetappend)。他们非常清楚,很可能会解决您的问题,或者至少可以帮助您提出更具体的问题。
  • @giorgio 有道理!
  • 阅读thisthisthis,这将是有意义的

标签: javascript php jquery jquery-load


【解决方案1】:

.load() 从服务器加载数据并将返回的 HTML 放入匹配的元素中。但是你需要使用$.ajax()$.get()来获取数据并返回到回调函数中。

$.get("./one.php", function(data) {
   $(".chatbox").append(data);
});

【讨论】:

    【解决方案2】:

    如果您尝试加载的页面由于某种原因而失败,您还需要处理错误块以通知您该问题。这是一种更全面的方法。这里我调用了一个 wiki 页面,但你会知道,所有的 php 页面实际上都被 PHP 引擎解释为有效的 html :)

    $.ajaxPrefilter( function (options) {
      if (options.crossDomain && jQuery.support.cors) {
        var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
        options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
      }
    });
    
    
    $.ajax({
      type: "GET",
      url: "https://en.wikipedia.org/wiki/PHP",
      data: { },
      success: function(data){
        $('#demo').html(data);
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {
        $('#demo').html("Status: " + textStatus + "<br/>Error: " + errorThrown);
      }
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div id="demo"></div>

    【讨论】: