2011-12-05 68 views
0

我用下面的代碼把Ajax的鏈接:警予阿賈克斯鏈接無法使用

echo chtml::ajaxLink('GO', 'http://localhost/index.php?r=user/delete', array('method'=>'POST')); 

但是,無論給第二個參數的URL I,E 'http://localhost/index.php?r=user/delete'。它會在瀏覽器中生成與當前網址的鏈接,而不是我剛剛指定的網址。 這是什麼問題?我怎樣才能創建AJAX鏈接? Google幾個小時卻無法解決問題。 高度讚賞任何形式的幫助。

回答

3

首先,你應該總是嘗試創建規範化的網址。
但我認爲你的疑問在於生成/追加的#。如果你去檢查警予ajaxLink的來源,你會看到:

public static function ajaxLink($text,$url,$ajaxOptions=array(),$htmlOptions=array()) 
{ 
    if(!isset($htmlOptions['href'])) 
     $htmlOptions['href']='#'; 
    $ajaxOptions['url']=$url; 
    $htmlOptions['ajax']=$ajaxOptions; 
    self::clientChange('click',$htmlOptions); 
    return self::tag('a',$htmlOptions,$text); 
} 

,所以如果你不設置htmloptions陣列中的a標籤的href屬性,則#將被追加。


你也應該明白yii使用jquery,所以如果你查看頁面的源代碼,你會在底部看到如何使用jquery來執行ajax請求,你調用的實際url也會在該腳本中可以看到。所以ajaxLink中的第三個選項/參數是jquery的ajax函數的選項。您可以使用此選項創建更好的ajax鏈接。
無論您的網址指向您的項目的哪個控制器(哪個控制器),與該網址關聯的操作都會被調用。

echo CHtml::ajaxLink('GO', 'http://localhost/index.php?r=user/delete', 
array('type'=>POST), //there are various other options for jquery ajax 
array('href'=>'http://localhost/index.php?r=user/delete')); 

爲了做出更好的AJAX鏈接,我建議通過jQuery的AJAX文檔去:

所以無論如何,你可以,如果你想顯示的URL,而不是一個#修改這樣的代碼。有一個success函數的選項,您可以使用它來讓用戶知道操作已完成。

希望這會有所幫助,如果我沒有完全回答你的問題,請不要猶豫留下意見。

1

你試過:

echo CHtml::ajaxLink('GO', array('/user/delete'), array('method'=>'POST')); 

ajaxLink documentation建議...?還請看normalizeUrl方法。

使用這些反過來使用createUrl的方法通常會更好,因爲它會小心地爲您的網站創建有效的網址。

0

我有同樣的問題(或者可能類似)。 我已使用renderPartial加載視圖和稍後在該視圖中,我正在使用ajaxLink並且它不工作。

我發現,使用renderPartial時,沒有用於Ajax操作的jquery腳本。 你需要做的是在renderPartial函數中添加第四個參數(true)來生成jquery腳本。

參見文檔:http://www.yiiframework.com/doc/api/1.1/CController/#renderPartial-detail

希望它可以幫助和節省時間來弄明白。