Php 对特定元素发出ajax请求的最有效方法
我一直在使用jQuery.load函数从页面中获取特定的divPhp 对特定元素发出ajax请求的最有效方法,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我一直在使用jQuery.load函数从页面中获取特定的div $('#result').load('ajax/test.html #variable123'); 这就像它应该做的那样,但是它需要花费很长时间,因为响应仍然包含完整的文档,即使#result中返回的是我定义的div。。在本例中#variable123 是否有其他方法可以实现这一点,但只让响应包含实际的div?返回此结果的最快方法是什么 为了进一步澄清,我正在搜索的id是从每个页面上的foreach循环生成的 <img na
$('#result').load('ajax/test.html #variable123');
这就像它应该做的那样,但是它需要花费很长时间,因为响应仍然包含完整的文档,即使#result中返回的是我定义的div。。在本例中#variable123
是否有其他方法可以实现这一点,但只让响应包含实际的div?返回此结果的最快方法是什么
为了进一步澄清,我正在搜索的id是从每个页面上的foreach循环生成的
<img name="<?php echo $_product->getId() ?>"
html页面还有一个foreach循环,该循环生成与名称中传递的id相同的div块。大卫和胡安都提出了不同的解决方案。有人能给我解释一下吗?因为你不能获取文件的任意部分:
$('#result').load('ajax/test_with_only_variable123_in_it.html');
当然,您可以使用服务器端程序,而不是生成静态文件包。您可以尝试调用如下函数:
$('#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>");
}
}
$('img').click(function () {
$('#result').load('ajax/test.php?id=' + $(this).attr('name'));
});
<?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
?>
$('#target').load(“functions.php”,{action:“that#div”});
如果($_POST){
$action=$_POST['action'];
如果($action==“that_div”){
退出(“您的部门”);
}
如果($action==“另一个分区”){
退出(“你的另一个部门”);
}
}
正如David所建议的,您需要在服务器端而不是客户端实现功能。不可能使用javascript加载html文件的一部分,因此您需要为需要的每个结果创建一个单独的html文件(如David所建议的),或者创建一个服务器端脚本来管理此结果。例如: 您的html/js文件如下所示:
$('#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>");
}
}
$('img').click(function () {
$('#result').load('ajax/test.php?id=' + $(this).attr('name'));
});
<?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
?>
我可能会使用.get()或.ajax()over.load()来传递数据,但对于本例,.load()应该如上所述
在test.php文件中,获取ID并加载所需的内容(如下所示):
如果第二部分没有意义,请告诉我们您的产品是如何存储的(无论您是使用简单的OO方法,还是使用php框架,如codeigniter),我们将尝试给出一个更详细的服务器端代码示例。这不是客户端,这是服务器端只发送您需要的数据。您使用的是服务器语言吗?请您再解释一下,以帮助我理解这一点?您只需要在您请求的文件中输入您需要的内容,而不是输入很多内容。感谢您的进一步解释。这开始有意义了,我明白我需要做什么。。只是在努力写它。然而,它只是面向对象的,在Magento平台上工作。我用这个调用产品我不需要创建某种if/else逻辑吗?如果它匹配通过该参数传递的变量,那么它只回显该产品id的信息?不幸的是,我没有使用Magento,所以我不太确定它的结构。但是,您应该能够调用$this->getProduct($id)(即,将$id参数传递给getProduct()方法),并且它应该只返回与请求的id匹配的产品,从而避免需要任何if/else逻辑。