我真的不能解決這裏發生了什麼。我正在使用jQuery load()方法來替換頁面中的一些HTML。在這種情況下,它將用用戶從列表中選擇的一個替換當前消息。 除了一件重要的事情之外,它們都按預期工作。當HTML返回時,它已經在其他任何地方添加了「ARRAY」這個詞。沒有其他信息(比如你會從var_dump()獲得)並且沒有標籤。從字面上看,大寫字母就是這個詞!如果我不使用AJAX加載視圖,那麼它按預期呈現。唯一的區別是請求是通過AJAX進行的。下面是相關的代碼:非常奇怪的行爲與CodeIgniter的jQuery加載()
JS:(全部包裹在準備())
$('.message_summary').click(function() {
// get message id
id = $(this).attr('id');
// load the new message first so that user can get on with reading it
$('#message_window').load($.baseurl+'messages/get_message/'+id);
// mark as read
$.get($.baseurl+'messages/ajax/mark_as_read/'+id);
// get current tag id
$.get($.baseurl+'messages/get_current_tag',
function(data){
// get the message count
$.get($.baseurl+'messages/ajax/set_new_message_count/'+data,
function(msg_count)
{
$('.new_message_count_'+data).html(msg_count);
}
);
});
});
CI控制器:
public function get_message($message_id=false)
{
if($message_id)
{
// get an individual message and prepare for display
$message = $this->messages_m->get_single_message($message_id);
foreach($this->tags['id'] as $index => $tag)
{
$tag_options[$tag] = $this->tags['tag_name'][$index];
}
$main_message = array(
'message_id' => $message_id,
'tag_name' => $message->tag_name,
'tag_options' => $tag_options,
'sender' => $message->first_name.' '.$message->last_name,
'date_received' => date($this->config->item('date_time_format'), $message->created_at),
'subject' => $message->subject,
'content' => $message->message
);
if($this->input->is_ajax_request())
{
return $this->load->view('partials/message_view', $main_message);
}
else
{
return $this->load->view('partials/message_view', $main_message, true);
}
}
視圖文件僅僅是HTML一些PHP變量。
任何人有任何想法?!?!
我以前沒有使用CI,但我使用了其他PHP MVC框架。是否有一個主要模板用於包含單詞'ARRAY'的ajax視圖渲染。另外,你可以搜索你的項目(大多數編輯/ IDE都有這種能力),並搜索大寫字「ARRAY」。 – devmatt 2011-06-02 17:39:20
你在調試方面有什麼嘗試?例如,當你退出('Something')'作爲第一行時會發生什麼?我無法根據您發佈的內容看到任何解釋,並且如果有其他人可以感到驚喜。 – 2011-06-02 17:48:34
感謝@devmatt的建議,但我不認爲這是問題所在。首先,我已經完成了整個項目的搜索,沒有出現。其次,當視圖從AJAX加載時,它不會經歷任何類型的模板。當第一次加載頁面時,相同的視圖加載沒有問題,只有在AJAX加載時纔會出錯。 – musoNic80 2011-06-02 17:48:40