2011-06-09 47 views
0

我在想这是否可能:试图在调用PHP脚本后用JS切换div

我有一个页面。用户点击链接并调用PHP脚本。 PHP脚本返回true或false。

根据真或假,我希望能够切换div。

我想知道我是否需要这样做的AJAX方式?人们通常如何做到这一点? 看起来很常见。

我用这YUI库已经:

<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?2.8.2r1/build/reset-fonts-grids/reset-fonts-grids.css&2.8.2r1/build/base/base-min.css"> 
+0

嗯,这一切都取决于你的代码是什么样子。如果你能提供,那对我们很有帮助。这完全有可能,我们只是不知道你在尝试什么。你在检查错误吗?而通过切换,你的意思是能够显示/隐藏div吗? – thescientist 2011-06-09 23:45:53

回答

0

是的,很容易,不需要Ajax。这里有两种方式:

使用直PHP:

<?php 

if($test) { 
    echo "<div>Content...</div>"; 
} 

?> 

或者,使用内联JavaScript(在PHP脚本),假设你有你的HTML一个<div id='targetDiv'>,并且在你的PHP中的$testVar

<script type='text/javascript'> 
function toggle(testVar) { 
    if(testVar) { document.getElementById('targetDiv').style.display = ""; } 
    else { document.getElementById('targetDiv').style.display = "none"; } 
} 

window.onload = function() { toggle(<?php echo $testVar; ?>); } 
</script> 

第二种方法可以很容易地改变以优雅地降级。

+0

干杯@Genadinik,很高兴它解决了。 BTW固定的最后一行错误应该是'echo $ testVar'。 – Ben 2011-06-10 04:01:54

2

的jQuery:

$.post('/path/to/url', {data: 'some data'}, function(data) { 
    if (data) $('#some-div').show(); 
    else $('#some-div').hide(); 
}, 'json'); 

PHP:

echo json_encode(true); 

欲了解更多信息,请参阅:

+0

我的应用程序使用YUI库。有没有办法使用它来做到这一点? - Genadinik 0秒前编辑 – Genadinik 2011-06-09 23:47:43

+0

@Genadinik,YUI的哪个版本? – Petah 2011-06-09 23:48:24

+0

我只是更新我原来的问题,我正在使用YUI调用 – Genadinik 2011-06-09 23:53:32

2

是的,你应该使用AJAX来创建站点中的良好的流动性。您可以使用其中一个大型JavaScript框架,而不是实现您自己的AJAX处理函数,我建议使用http://jquery.com/。在那里,你可以阅读(并看到例子)jQuery.ajax - http://api.jquery.com/category/ajax/

这应该让你开始,但主要想法是将该链接绑定到AJAX函数,该函数将调用您的PHP脚本,并根据返回的数据的内容打开/关闭您的DIV。

祝你好运!

+0

实际上我的应用程序正在使用YUI库。有没有办法使用它来做到这一点? – Genadinik 2011-06-09 23:47:24

+0

@Genadinik:我对YUI一无所知,但是我遇到过http://developer.yahoo.com/yui/connection/上有一篇很好的教程。 – 2011-06-09 23:57:12

2

设置PHP脚本添加一个隐藏字段... ...等

<input type="hidden" id="passed-value" value="passed-val-is-true" /> 

然后,在JavaScript时,你火了触发事件..检查元素...

在jQuery会是这样的...

$foo.click((if (passed-value.value === "passed-val-is-true") { foo.toggle(); } 

对不起,语法..但你应该得到的一般想法。

另外,如果你需要它没有页面重载的事,我会推荐高清阿贾克斯(通过jQuery PREF)