0

ajax呼び出しを使用してWebサイトが存在するかどうかを確認しようとしていますが、正しく表示されているかどうかわかりません。私のページでは、クリックするとURLを取得します

$("#go").click(function() {
    var url = $("#url").val();
    $.ajax({
        type: "POST",
        url: "/ajax.php",
        data: "url="+url,
        success: function(){
          $("#start").remove();
        },      
        error: function(){
        alert("Bad URL");
        }
    });     
});

a =そして、ajax.phpをチェックします

$url = $_POST['url'];

ini_set("default_socket_timeout","05");
set_time_limit(5);
$f=fopen($url,"r");
$r=fread($f,1000);
fclose($f);
if(strlen($r)>1) {
    return true;
} else {
    return false;
}

何があっても成功しているようです...何が足りないのですか?

4

3 に答える 3

1

Nemodenが言ったように、falseを返しても成功メッセージが表示されます。返されたデータを確認してから、要素を削除する必要があります。

例えば

$("#go").click(function() {
    var url = $("#url").val();
    $.ajax({
        type: "POST",
        url: "/ajax.php",
        data: "url="+url,
        success: function(response){
          if (response == 'whatever you are returning') {
              $("#start").remove();
          }
        },      
        error: function(){
        alert("Bad URL");
        }
    });     
});
于 2012-09-21T04:06:22.297 に答える
1

何があっても成功しているようです...何が足りないのですか?

これは非常に簡単です。

この理由のために:

// You have no idea what server respond is.
// that is you can't parse that respond
success: function(){
   $("#start").remove();
}

どちらにする必要があります

success: function(respond){

   //you don't have to return TRUE in your php
   //you have to echo this one instead
   if ( respond == '1'){
     $("#start").remove();
   } else {
     //handle non-true if you need so
   }
}

PHPでこれを置き換えます:

if(strlen($r)>1) {
    return true;
} else {
    return false;
}

if(strlen($r)>1) {
    print true; //by the way, TRUE is a constant and it equals to == 1 (not ===)
}

そうそう、これも修正することを忘れないでください:

data: "url="+url

data : {"url" : url}

于 2012-09-21T04:43:26.637 に答える
0

サーバー側スクリプトが応答を返すたびに成功コールバックが呼び出されます(接続エラーまたはサーバー側エラーはありませんでした)。これはあなたの質問に答えていますか?

違いを見ます:

$("#go").click(function() {
    var url = $("#url").val(),
        ajax_data = {url: url};
    $.post({
        "/ajax.php?cb=?",
        ajax_data,
        function(response){
          if (response.status) {
            // URL exists
          }
          else {
            // URL not exists
          }
          $("#start").remove();
        },      
        'json'
    });     
});

phpバックエンド:

printf('%s(%s)', $_GET['cb'], json_encode(array('status' => (bool)$url_exists)));
于 2012-09-21T04:01:57.277 に答える