1

これは非常に基本的な質問であり、実際ほど難しくはないはずです。

私が開発したCMSがあります。ajax を使用してフォーム パラメータを変更しています。ユーザーが「特別なパラメーター」を持たないオプションを選択した場合、何も表示したくありません。現在、ファイルを検索する ajax があります。ファイルが存在する場合は、それを div に表示する必要があります。存在しない場合は、何も表示したくありません。現時点では、ファイルが存在しない場合、div は 404 エラーでページ全体にロードされます。エラーを表示したくありません。ファイルが存在しない場合は何も表示したくありません。

これは私が持っているものです:

$.ajax({

url: '../components/com_'+PARAMS+'/menu.php',
success: function(result){
     $('#menuparams').html(result);
},
error: function(){
    $('#menuparams').html('');
}
});
4

2 に答える 2

0

HTTP 応答ヘッダーの送信に失敗している CMS にパスがルーティングされているようです。CMS の応答ヘッダーで 404 を送信するのを忘れたか、ヘッダーを送信する前にページにテキストを送信しました。

この場合、CMS を修正することができます。または、404 エラーの成功結果を確認することもできます。

アップデート

CMS で何かが見つからない場合、他の何かが送信される前に、次のことを行う必要があります。

<?php
header("HTTP/1.0 404 Not Found");
?>

ヘッダーへの呼び出しが行われる前に、Web サーバーに送信されるスペースを含め、文字がまったくない必要があります。CMS の内部について詳しく知らなければ、それ以上のことはできません。

あなたは何も得られないと言うので、私は尋ねなければなりません。ブラウザで URL を開くと何が表示されますか? また、ブラウザで開くために使用する URL と PARAMS の内容を投稿していただけますか。

何を教えてください console.log('../components/com_'+PARAMS+'/menu.php'); します。$.ajax({ の前に置くと

于 2013-08-10T17:39:03.683 に答える
0

あなたの jQuery コードは私には正しいように見えますが、問題はあなたの CMS が返すものにあるようです。404 エラーのページ全体が div に読み込まれていると言うので、CMS は実際には応答で 404 ステータスを設定せず、404 エラー ページを返すだけのようです。その場合、jQuery はそれがエラーであることを認識せず、success 関数を実行します。

CMS で 404 ステータスを設定できる場合、jQuery コードは期待どおりに機能します。できない場合は、コードを次のように変更できます。

$.ajax({
  url: '../components/com_'+PARAMS+'/menu.php',
  success: function(data) {
     if ($(data).find(... something only the 404 error page has ...).length) {
       $('#menuparams').html('');
     } else {
       $('#menuparams').html(data);
     }
  }
});
于 2013-08-10T17:44:04.720 に答える