2012-07-09 23 views
0

我在Javascript/jQuery中設置了自定義模板,我需要從CodeIgniter控制器中提取數據並將返回的JSON插入到js/jQuery模板中。我相信我的邏輯是正確的,但由於某種原因,似乎沒有任何工作,我發現了以下錯誤在我的劇本的開頭:jQuery自定義模板無法正常工作

Uncaught SyntaxError: Unexpected end of input

我怎麼會去這樣做呢?到目前爲止,我寫的代碼如下所示:

$("#projects").click(function() { 
    jQuery.ajax({ 
     type: "POST", 
     dataType: "JSON", 
     url: "<?=base_url()?>index.php/home/projectsSlider", 
     data: dataString, 
     json: { 
      returned: true 
     }, 
     success: function (data) { 
      if (data.returned == true) { 
       $("#content").fadeOut(150, function() { 
        $(this).replaceWith(projectsSlider(), function() { 
         var html = projectsSlider(data.projectId, data.projectName, data.startDate, data.finishedDate, data.createdFor, data.contributors, data.screenshotURI, data.websiteURL); 
         jQuery(html).appendTo("#content").fadeIn(); 
        }); 
       }); 
      } 
     } 
    }); 
}); 

這裏是我的PHP:

function projectsSlider() { 
    $query = $this->db->query("SELECT * FROM projects ORDER BY idprojects DESC"); 
    foreach ($query->result() as $row) { 
     $projectId = $row->projectId; 
     $projectName = $row->projectName; 
     $startDate = $row->startDate; 
     $finishedDate = $row->finishedDate; 
     $createdFor = $row->createdFor; 
     $contributors = $row->contributors; 
     $projectDesc = $row->projectDesc; 
    } 
    $query1 = $this->db->query("SELECT * FROM screenshots s WHERE s.projectId = '{$projectId}' ORDER BY s.idscreenshot DESC"); 
    foreach ($query1->result() as $row2) { 
     $screenshotURI = $row2->screenshotURI; 
     $websiteURL = $row->websiteURL; 
    } 
    echo json_encode(array('returned' => true, 
     'projectId' => $projectId, 
     'projectName' => $projectName, 
     'startDate' => $startDate, 
     'finishedDate' => $finishedDate, 
     'projectDesc' => $projectDesc, 
     'createdFor' => $createdFor, 
     'contributors' => $contributors, 
     'screenshotURI' => $screenshotURI, 
     'websiteURL' => $websiteURL)); 
} 
} 

任何想法,爲什麼發生這種情況?

回答

2

問題看起來你已經有了一個尾隨}

編輯:當我重構別人回答,但我無論如何提供這個版本:

function projectsSlider() { 

    $query = $this->db->query("SELECT * FROM projects ORDER BY idprojects DESC"); 
    $project = $query->fetch(PDO::FETCH_OBJECT); 
    $project->screenshots = array(); 

    $query = $this->db->query("SELECT * FROM screenshots WHERE projectId = '$projectId' ORDER BY idscreenshot DESC"); 

    foreach ($query->result() as $screenshot) { 
     $project->screenshots[] = $screenshot; 
    } 
    echo json_encode(array('returned' => true,'project'=>$project)); 

} 

既然你可以獲取,而不是一個對象,你不必做所有的循環和轉換。

+0

我不知道那是怎麼回事,但尾部}不在我原來的代碼中。但jQuery似乎沒有正常工作。這是我的整個頁面上的代碼:http://pastebin.com/a31tsABt – 2012-07-10 00:19:35

+0

沒關係,我想通了。我沒有結束我的document.ready語句 – 2012-07-10 00:25:58

0

語法錯誤與您的代碼邏輯無關。這意味着你的語法是錯誤的。如果這是您唯一的PHP代碼,那麼就會發生這種情況,因爲您在函數結尾處有一個額外的}。你應該看看PHP linter以避免這些hangups。

相關問題