0

我正在尝试检查是否存在带有 ajax 调用的网站,但我不确定我是否正确。在我的页面上,我点击了一个 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

看来我无论如何都取得了成功......我错过了什么?

这非常简单。

因为这个原因:

// 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 回答
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 回答
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 回答