【问题标题】:Php echo content into divphp 将内容回显到 div
【发布时间】:2016-11-11 21:31:35
【问题描述】:

我正在尝试将 php 中生成的 html 和 javascript 插入页面中的 div 中。

a.php 文件:

function get_preset() {
    return (bunch of html, javascript);
}

b.php:

<div id="preset_preview">
    //<?php echo get_preset(); ?> //this works well, but I need to execute this every time I click a button in jquery.
</div>

我可以使用ajax在我的jquery和a.php之间成功通信,但是如何将php中get_preset函数调用返回的内容放入preset_preview div中?

有没有办法做到这一点无需从 get_preset 函数调用中使用 ajax 将数据发送到 jquery,然后使用 jquery 将其放入 preset_preview div?

php 每次都可以像这样应 jquery 的请求以某种方式单独完成吗?

所以我用jquery ajax调用php来执行这个:

<div id="preset_preview">
    <?php echo get_preset(); ?>
</div>

让我感到困惑的是,php 可以成功地做到这一点(如上面的示例所示),而无需先使用 ajax 将数据发送到 jquery。

【问题讨论】:

  • 听起来您需要了解客户端和服务器端脚本之间的区别才能回答您的问题。
  • 你可以在 b.php 文件中包含 a.php 文件,然后在你的 b.php 文件中调用 get_preset(),当你需要数据时你 ajax 调用 b.php
  • 请尝试解释你真正想用这段代码做什么。例如,JS 和 HTML 会做什么。以便我们提供更多帮助。

标签: javascript php jquery html ajax


【解决方案1】:

一个.php文件

function get_preset() {
    return (bunch of html, javascript);
}

echo get_preset();

b.php 文件

<button type="button" id="preview">Preview Preset</button>
<div id="preset_preview">
    <?php include "a.php"; ?>
</div>

<script>
    $('#preview').on('click', function(e) {
        e.preventDefault();
        $("#preset_preview").load('a.php');
    });
</script>

您可以实际使用多种 jQuery AJAX 方法。上面的例子是使用load(),它用get方法包装你的请求(你可以通过调用ajaxSetup()覆盖它的请求方法,无论如何)到a.php的相对URL。

你可以看到 a.php echoing (string of?) get_preset() 函数,然后将它放在 b.php 文件中的 &lt;div id="preset_preview"&gt; 中。


在这种情况下扩展AJAX的需求是因为PHP只做类似的事情

  1. 获取请求,无论方法是什么(get、post、put 等)
  2. 返回响应。通常在你做了一些与请求值相关的逻辑之后。

每当您的预期响应呈现给客户端时,它就会死掉。返回响应后,您无法立即在墙后做任何魔术。换句话说,需要页面加载。

然后 AJAX 来帮助您创建另一个对相应 PHP 文件的请求。它恢复一个 PHP 文件来执行(另一个)请求 -> 执行一些逻辑 -> 然后返回它。静默,无需页面加载。

作为对评论的回应——这可以通过函数调用以某种方式完成,而不包括在 preset_preview 中的实际 php 文件吗?

都是可以的。只要您满足调用者的任何需求。

一个.php文件

function get_preset() {
    return (bunch of html, javascript);
}

echo get_preset();

a.php 就是 echoing get_preset()

b.php

<button type="button" id="preview">Preview Preset</button>
<div id="preset_preview"></div>

<script>
    $('#preview').on('click', function(e) {
        e.preventDefault();
        $("#preset_preview").load('a.php');
    });
</script>

b.php 文件只是对 a.php 文件进行请求。每当单击具有选择器 id #preview 的按钮时,它会将任何 a.php 内容加载到 #preset_preview

你也可以在页面准备好之后渲染 a.php 的内容。这与上面写的我的第一个 sn-p 类似。

<script>
    $(document).ready(function() {
        $('#preset_preview').load('a.php');
    });

    $('#preview').on('click', function(e) {
        e.preventDefault();
        $("#preset_preview").load('a.php');
    });
</script>

它只是告诉您应该在 b.php 页面准备就绪之后立即加载 a.php,并在单击按钮后“重新加载”它。

【讨论】:

  • 是的,get_preset 回显字符串。所以在调用 load('a.php') 之前,a.php 的内容在 b.php 中是不可见的?
  • 其实没有,因为&lt;?php include "a.php"; ?&gt;。但是您可以通过监听页面加载或使用$(document).ready() 来执行类似的方法,这意味着您应该编写两次load() 方法。
  • 但是我只需要在我的请求中包含a.php(或者只是get_preset函数调用的字符串内容),不像上面的例子。不确定上面的加载点是什么,因为 a.php 立即包含在内。这正是我的问题,但我不知道如何执行它。
  • 但我只需要在我的请求中包含 a.php——点击事件?当然,删除 &lt;?php include "a.php"; ?&gt; 或使用可识别的选择器制作空白元素即可。
  • a.php 应该满足您 b.php 的任何需求。这就是我在 a.php 中创建echo 的原因。如果您仍然希望 b.php 处理请求,我将更新我的帖子并提供一些解决方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
相关资源
最近更新 更多