2011-12-07 23 views
0

私は、admin_getcontentsという関数を持つImportControllerを持っています。 AJAXを通じてcakePHPがURLをパラメータとして渡す

function admin_getcontents($url = null) 
{ 
    $contents = json_decode(file_get_contents(($url)),true); 
    //some stuff 
} 

私は/管理/インポート/のgetContents /呼び出す:私はページを呼び出す

$.get('/admin/import/getcontents/'+ encodeURIComponent($('#urlcheck').val()) ,function(data) { 
     $('#importtable').html(data); 
     $('#busy-indicator').fadeOut('high'); 
}); 

:/管理/インポート/のgetContents/HTTP%3A%2F%2Flocalhost%2Feclipse% 2Fanarxeio%2Fexport%2Fcontents%2F

Apacheは404エラーを表示します。/admin/import/getcontents/1を呼び出すと、ページが正しく読み込まれます。だから、私は渡すと思った? ?のようなパラメータの前に:

管理/インポート/のgetContents/HTTP%3A%2F%2Flocalhost%2Feclipse%2Fanarxeio%2Fexport%2Fcontents%2F

は今、私は404エラーが、$のURLのparamを得ることはありませんin admin_getcontents()は空です。上記をどのように達成できますか?あなたのPHPのその後

// javascript 
$.get('/admin/import/getcontents/'+ encodeURIComponent(encodeURIComponent(encodeURIComponent($('#urlcheck').val()))) ,function(data) { 
    $('#importtable').html(data); 
    $('#busy-indicator').fadeOut('high'); 
}); 

URLデコード、それはあなたがそれを使用する前に:

おかげ

答えて

0

クイックフィックスは、あなたのURLをエンコードトリプルURLになり

// php 
function admin_getcontents($url = null) 
{ 
    $url = urldecode(urldecode($url)); 
    $contents = json_decode(file_get_contents(($url)),true); 
    //some stuff 
} 

EDIT以下のコメント:

urlパラメータを渡すようにルーティングを設定します。あなたの設定を見ると、次のようになります:

Router::connect('/admin/import/getcontents/:url', array(
    'controller' => 'import', 
    'action'  => 'getcontents', 
    'admin'  => true), 
    array(
    'url' => '(.*)', 
    'pass' => array('url') 
) 
); 
+0

これは機能しません。問題はcakePHPにあります。$ _REQUESTの配列にURLがあるのがわかります。しかし、cakePHPは関数のparamを認識しません。 – gong

+0

ああ、申し訳ありませんが、あなたのルートを正しく設定したと仮定しました。私はそれを試して、それは動作します。私の答えを更新させてください。 –

+0

さらに、あなたは404を手に入れていると言いましたか?あなたは404を取得している場合、どのようにリクエストオブジェクトを見ることができますか? –

関連する問題