我一直在玩jQuery .load函数来从页面中抓取一个特定的div。
$('#result').load('ajax/test.html #variable123');
这样可以正常工作,但它会永远占用,因为响应仍然包含完整的文档,即使在#result中返回的所有内容都是我定义的div ...在此示例中#variable123
我是否有另一种方法可以实现此目的,但只有响应包含实际的div?返回此结果的最快方法是什么?
为了进一步说明,我搜索的id是从每个页面上的foreach循环生成的。
<img name="<?php echo $_product->getId() ?>"
然后是一个onclick事件,让他们为相关的div id发出ajax请求。
$('img').click(function () {
$('#result').load('ajax/test.html .' + $(this).attr("name"));
});
页面test.html还有一个foreach循环,它生成与名称中传递的id相同的div块。大卫和胡安都提出了严重的解决方案。有人可以向我解释一下这个吗?
答案 0 :(得分:1)
由于您无法获取文件的任意部分:
$('#result').load('ajax/test_with_only_variable123_in_it.html');
当然,您可以使用服务器端程序,而不是生成一组静态文件。
答案 1 :(得分:1)
正如其他人所说,您需要实现功能服务器端,而不是客户端。无法使用javascript加载部分html文件,因此您需要为您需要的每个结果(如David建议的那样)拥有单独的html文件,或创建服务器端脚本来管理此文件。您。例如:
您的html / js文件如下所示:
$('img').click(function () {
$('#result').load('ajax/test.php?id=' + $(this).attr('name'));
});
我可能会使用.get()或.ajax()来传递数据,但是对于这个例子,.load()应该如上所述。
在test.php文件中,获取ID,并加载所需内容(如下所示):
<?php
// load class/model/whatever you need to do
$id = $_GET['id'];
$product = $productmodel->get($id); // or however you load a single product from your class/model
// echo data from $product
?>
如果第二部分没有意义,请告诉我们您的产品是如何存储的(无论您使用的是简单的OO方法,还是使用像codeigniter这样的php框架),我们都会尝试给出一个更详细的服务器端代码示例。
答案 2 :(得分:0)
你可以尝试调用这样的函数:
$('#target').load("functions.php",{action:"that_div"});
if($_POST){
$action = $_POST['action'];
if($action == "that_div"){
exit( "<div>Your div</div>" );
}
if($action == "another_div"){
exit("<div>Your another div</div>");
}
}
大卫闷闷不乐