所以我有一个php循环,我使用jquery幻灯片切换来隐藏/显示带有sql结果的表。目前该表仅使用php加载,但由于其中存在很多导致一些加载问题,我需要使用幻灯片切换btn触发ajax,因此它仅在按下按钮时请求当前项目详细信息。我可以让它从jquery调用php文件,但我很难传递每个项目的值,所以它可以在数据库上执行请求。这是php foreach循环内容的样子;
<span class="searchitem">
// some visible content here
<span value="item name" class="btn">button</span>
<span class="slide_area">
// hidden slide content ajax needs to populate with php result
</span>
</span>
这个html重复我使用jquery slidetoggle来隐藏slide_area,我需要做的是用php结果填充slide_area,php文件需要名称返回结果名称通过url传递获取,所以我只需要用btn值的实际名称附加网址,我确定这不是那么难,但我在这里。
这是jquery:
<script type="text/javascript">
//<![CDATA[
$(document).ready(function ()
{
$('.searchitem').each(function () {
$(this).find('.slide_area').hide();
$(this).find('.btn').click(function ()
{
var ajax_load = "<img src='images/spinner.gif' style='width:50px;' alt='loading...' />";
var loadUrl = "ajax/item.php?name=";
var loadName = $(".btn");
var Name = URLEncode(loadName);
var loadString = loadUrl + Name;
$(this).parent().find('.slide_area').slideToggle(1500).html(ajax_load).load(loadString);
});
});
});
//]]>
</script>
我需要从btn获取值并附加loadURL,我打开以不同的方式发送数据,如果需要通过帖子,更新jquery仍然不工作我在这里做错了什么?
感谢。
答案 0 :(得分:1)
最简单的方法是使用Phery图书馆http://phery-php-ajax.net/
这里的关键是data-phery-remote="toggle"
,它会在点击时自动调用PHP函数,并且可以在任何地方重复使用
<span class="searchitem">
// some visible content here
<span value="item name" data-phery-remote="toggle" class="btn">button</span>
<span class="slide_area">
// hidden slide content ajax needs to populate with php result
</span>
</span>
逻辑相反,加载只发生一次AJAX调用,而不是两次。
Phery::instance()->set(array(
'toggle' => function($data){
$r = new PheryResponse;
/* do your code, fill $html_content */
$r->this()->siblings('.slide_area')->html($html_content)->toggle();
return $r;
}
))->process();