当前位置: 首页 > 面试题库 >

如何在zend中使用AJAX-JSON组合加载多个DIV?

陶裕
2023-03-14
问题内容

我正在zend框架中逐步学习AJAX。我将此问题用作第一步,并且该问题的可接受答案对我有用。现在,我想使用JSON加载多个DIV。这是我的计划。

IndexController.php:

class IndexController extends Zend_Controller_Action {

    public function indexAction() { }

    public function carAction() { }

    public function bikeAction() { }
}

index.phtml:

<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
<script type="text/javascript" src="js/ajax.js"></script>

<a href='http://practice.dev/index/car' class='ajax'>Car Image</a>
<a href='http://practice.dev/index/bike' class='ajax'>Bike Image</a>

<div id="title">Title comes here</div>
<div id="image">Image comes here</div>

car.phtml

<?php
$jsonArray['title'] = "Car";
$jsonArray['image'] = "<img src='images/car.jpeg'>";
echo Zend_Json::encode($jsonArray);
?>

bike.phtml:

<?php
$jsonArray['title'] = "Bike";
$jsonArray['image'] = "<img src='images/bike.jpeg'>";
echo Zend_Json::encode($jsonArray);
?>

ajax.js:

jQuery(document).ready(function(){
    jQuery('.ajax').click(function(event){
       event.preventDefault();

       // I just need a js code here that: 
       // load "Car" in title div and car2.jped in image div when "Car Image" link clicked
       // load "Bike" in title div and bike2.jped in image div when "Bike Image" link clicked

      });
});

我想你已经明白了。当单击任何带有class
=’ajax’的链接时,表示它的AJAX调用。phtml文件(car.phtml,bike.phtml)中的array(标题,图像)的索引表明应在DIV中加载此内容。

我的问题:

现在,如果它以
json
形式获取数据,如何实现ajax.js来完成这项工作?

谢谢


问题答案:

使用Zend
Framework将JSON编码为

echo Zend_Json::encode($jsonArray);

如果您已经使用JSON进行序列化,则不要以HTML标签发送图像。这样做的缺点基本上是JavaScript代码除了将图像粘贴到页面中的某处之外不能对图像做太多事情。相反,只需将路径发送到JSON中的图像即可。

$jsonArray = array();
$jsonArray['title'] = "Hello";
$jsonArray['image'] = "<img src='images/bike.jpg' />";

在客户端,收到的JSON将如下所示:

{
    "title": "Hello",
    "image": "<img src='images/bike.jpg' />"
}

因此,jQuery代码需要循环遍历每个键,然后使用匹配的键“ image1”或“ image2”将新图像注入div。

jQuery('.ajax').click(function(event) {
    event.preventDefault();
    // load the href attribute of the link that was clicked
    jQuery.getJSON(this.href, function(snippets) {
        for(var id in snippets) {
            // updated to deal with any type of HTML
            jQuery('#' + id).html(snippets[id]);
        }
    });
});


 类似资料:
  • 问题内容: 我已经将Zend_Form_Element_Hash包含在一个表单multicheckbox表单中。我将jQuery设置为在单击复选框时触发AJAX请求,我将令牌与此AJAX请求一起传递。第一个AJAX请求效果很好,但随后的请求失败。 我怀疑可能是令牌通过验证之后才从会话中删除(跳= 1)。 使用Zend Framework Hash保护表单但使用AJAX完成其中一些请求的攻击计划是什

  • 问题内容: 我正在使用JSON传输数据。 我需要在HTML页面中使用Ajax读取仅在脚本中包含一个JSON对象的文件吗? 我是否也需要jQuery,或者是否可以使用Ajax加载该JSON文件? 在不同的浏览器上是否有所不同? 问题答案: 您不需要任何库,香草javascript中的所有内容均可用,以获取json文件并进行解析:

  • 问题内容: 我熟悉以普通方式在jQuery中使用ajax。 我已经玩了一段时间了,但是不了解Wordpress使其正常工作需要 什么… 我在这里所摘录的内容来自一些教程或文章。 这在 functions.php中 (在子主题中): jQuery本身正在加载并正常工作。 我已经尝试过一些基本的ajax,如下所示: 除此之外,我不知道如何测试以确保它是否从一开始就正确地加载了…… 在这里的任何帮助,将

  • 我有一个以下格式的csv文件,第一列是id,第二列是name,第三列是Dept,这个文件有700K多行。我试图通过使用SQL Loader在oracle表中只移动部门10、90、30和70的详细信息。 请帮帮我。如何在控制文件中使用多个条件

  • 我想计算一天内每个产品的每个IP访问计数。 一个索引中有三个参数(nginx访问日志): 时间戳 客户IP product\u id 我知道date\u直方图可以参考https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.

  • 我想通过传递一个网址来加载多个图像。与本教程不同http://www.learn2crack.com/2014/06/android-load-image-from-internet.html其中只有一个图像被下载并使用img.setImageBitmap(图像)查看;我的问题是如何将url发送到一个方法以加载该url的图像,该方法返回一个图像,然后我在图像视图中显示它。