JSON响应与Safari和Safari Mobile之间的差异

时间:2013-05-21 19:34:03

标签: jquery ajax json codeigniter jquery-mobile

我注意到使用JSON响应的不同浏览器之间的一些奇怪行为。我遇到问题的浏览器是Safari Mobile,特别是iOS模拟器。

我正在使用Codeigniter并返回部分视图。在所有浏览器(Safari Mobile除外)中,我的JSON响应返回以下内容:

response.Html = 
    "<li>...</li>
     <li>...</li>
     <li>...</li>
     <li>...</li>
     <li>...</li>
     <li>...</li>"

这正是我想要的 - 我期待6个列表项并将其注入页面。但是在Safari Mobile中由于某种原因,我的响应包含一个包含5个对象的数组 - 这些对象包含一些应该用于填充局部视图的数据:

response: Array[5]
     0: Object
     1: Object
     2: Object
     3: Object
     4: Object
     length: 5

对此的AJAX调用如下:

function getRandomMovies () {
    $.mobile.showPageLoadingMsg("a", "Fetching random movies");
    $.ajax({
        url: "random/get_random_movies",
        type: "POST",
        dataType: "json",
        contentType: "application/json",
        cache: false,
        success: function (response) {
            $('#random-gallery').html(response.html);
            initPhotoSwipe();
            $.mobile.hidePageLoadingMsg();
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) { 
            alert("Status: " + textStatus); alert("Error: " + errorThrown); 
        }  
    });
}

在AJAX调用的控制器方法中,我有以下哪些应该在大多数浏览器中返回HTML。

public function get_random_movies(){
        $movies = $this->random_model->get_random_movies();

        $data['results'] = $movies;
        $response['html'] = $this->load->view('partials/_random_movie_multiple', $data, true);

        echo json_encode($response);
    }

你必须原谅我粘贴所有这些代码块,但我相信它们都是正确调试问题所必需的。任何有关这方面的帮助都会受到赞赏,因为我花了很多时间试图调试这个问题,但无济于事。

编辑1:

_random_movie_multiple.php

foreach ($results as $result) {

    echo '<li><a data-ajax="false" rel="external" data-href="search/movie/'.url_title($result->title, "-", true).'/'.$result->id.'" data-caption="'.$result->title.' ('.$result->release_year.')" href="'.$result->img284.'"><img src="'.$result->img88.'"/></a></li>';

}

0 个答案:

没有答案