【问题标题】:Click [Submit] -> Hide DIV Container 1 -> Show DIV Container 2 -> Load DIVs Found in .PHP File inside DIV Container 2点击 [提交] -> 隐藏 DIV 容器 1 -> 显示 DIV 容器 2 -> 加载 DIV 容器 2 内的 .PHP 文件中的 DIV
【发布时间】:2015-12-26 19:25:40
【问题描述】:

这就是我想要做的事情

1 - 点击提交

2 - 隐藏 DIV 容器 1

3 - 显示 DIV 容器 2

4 - 将“PricingDisclaimer.php”中的所有 DIV 加载到 Div Container 2 中


这是我的 DIV 代码

<div id="MainContainer">

<div class="Container1">
Lalala content
<input type="submit" value="Select" id="Load_Container2"/>
</div>

<div id="Container2" style="display:none;">I want to load all of the DIVs found inside "PricingDisclaimer.php" and place them inside this container</div>
</div>

这是我的 Javascript / Jquery 代码

<script type="text/javascript">
$(document).ready( function() {
$("#Load_Container2").on("click", function() {
    $(".Container1").hide();
    $("#Container2").show();
    $("#Container2").load( "http://www.prismasites.com/wp-content/themes/Prismasites/PricingDisclaimer.php" );

});
</script>

它隐藏了 DIV Container1 [WORKS]

显示 DIV Container2 [WORKS]

问题:

它不会将 PricingDisclaimer.php 加载到 #Container2 中

这是 PricingDisclaimer.php

<div id="PricingBoxDisclaimer">
<div id="PBDisclaimerTLCorner"></div><div id="PBDisclaimerTMBorder"></div><div id="PBDisclaimerTRCorner"></div>
<div id="PBDisclaimerMLBorder"></div><div id="PBDisclaimerContainr"><div id="PricingDisclaimerTitle"><span><b>DISCLAIMER</b></span></div><div id="PricingDisclaimerContainer"><div id="PricingDisclaimerText">
<?php query_posts('p=1272' ); ?>
<?php if (have_posts()); ?>
<?php while ( have_posts() ) : the_post();?>
<br /><h1>
<?php
the_title();
echo '<br>'; ?></h1><br />
<?php
echo '<p>';
the_content();
echo '</p>';
endwhile; ?>
</div></div><div id="PBDisclaimerMRBorder"></div>
<div id="PBDisclaimerBLCorner"></div><div id="PBDisclaimerBMBorder"></div><div id="PBDisclaimerBRCorner"></div>
</div>

^ 我想要所有这些 ^

在里面

v v v v v v

<div id="Container2" style="display:none;">HERE</div>

我该怎么做?

【问题讨论】:

  • 为什么不把 div 放在开头的include "PricingDisclaimer.php"?仅当您取消隐藏 div 时才会显示。
  • $("#Container2").load( "http://www.prismasites.com/wp-content/themes/Prismasites/PricingDisclaimer.php" , function(response){response.append("#Container2");}); 试试这个,我想可能会有帮助。
  • @Tareq Mahmood 因为我的网站是一个有 8 个部分的“1 个主页网站”。 Chrome/Firefox 浏览器会加载隐藏 div 中的所有内容。在我的隐藏 div 中加载所有内容会降低我的网站加载速度。在我点击提交按钮之前,我不希望它加载隐藏 div 中的内容。

标签: javascript php jquery html css


【解决方案1】:

我想这可能对你有帮助。

$("#Container2").html('<iframe src="http://www.prismasites.com/wp-content/themes/Prismasites/PricingDisclaimer.php"</iframe>');

【讨论】:

  • 它可以工作,但它显示一切都搞砸了。查看:www.prismasites.com 并向下滚动到定价计划部分,然后单击提交按钮。
  • 我不确定 the_title(); & 内容();功能内容。请检查这些变量的 [COMPANY NAME] 和 [DATE] 值来自何处。希望您能得到解决方案。
【解决方案2】:

这实际上是因为,您调用 load 的方式,文件被称为独立文件,但它有一些代码依赖于一些 wordpress 函数。因此,当您尝试调用它时,它不能被调用。如果你想以这种方式加载它,你应该让它独立于 wp 代码。只需尝试在浏览器中访问 url,您现在就会收到此错误:

DISCLAIMER

Fatal error: Call to undefined function query_posts() in /srv/disk12/1806831/www/prismasites.com/wp-content/themes/Prismasites/PricingDisclaimer.php on line 4

编辑

我明白了,在您删除 WP 相关代码后,您的链接现在可以正常工作了。但是我在您的 JS 代码中发现了另一个问题。您错过了 }); 的右大括号 $(document).ready。像这样修复它:

$(document).ready( function() {
    $("#Load_Container2").on("click", function() {
        $(".Container1").hide();
        $("#Container2").show();
        $("#Container2").load( "http://www.prismasites.com/wp-content/themes/Prismasites/PricingDisclaimer.php" );
    }); 
}); //You missed this closing braces

跨域问题

跨域请求被阻止:同源策略不允许读取远程资源。

这是因为,您将请求从一个域发送到另一个域,这不允许跨域请求。你可以从你的文件PricingDisclaimer.php 中允许它。只需在文件顶部添加这一行(在执行任何回显或输出任何 html 代码之前):

header('Access-Control-Allow-Origin: *');

了解更多信息:Cross-origin resource sharing

【讨论】:

  • 所以你的意思是告诉我绝对没有办法将它连接到wordpress?我取出了所有的 wordpress 代码,它仍然没有将 .php 中的 div 加载到 div 容器中。
  • @ShenHuiZhang,我看到你的链接现在可以使用了。但是我在您的 JS 中发现了问题,请参阅我的编辑。
  • 检查您的控制台。如果它不起作用,一定有一些错误。
  • “控制台”是什么意思?你的意思是我的虚拟主机托管了我所有的 .php 文件?
  • 没有。右键单击 > 检查页面中的元素。您会发现 JS 错误以红色标记显示的控制台区域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 2010-10-15
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多