最有效的方法来为特定元素发出ajax请求

时间:2011-02-02 00:33:18

标签: php javascript jquery ajax

我一直在玩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块。大卫和胡安都提出了严重的解决方案。有人可以向我解释一下这个吗?

3 个答案:

答案 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>");  
    }  
}  
大卫闷闷不乐