如果成功数据,我如何阻止提交按钮

时间:2014-02-07 22:48:18

标签: jquery

我有一张表格, 我的JS代码在HTML表单下面。

如果要显示警报(如文件存在),则该URL不存在 阻止提交的验证(如此刷新页面)。

我可能会使用return true或false?如果是这样我可以把它们放进去吗?

echo '<form id="gestion_form" method="post" action="#" enctype="multipart/form-data">'; 
....
echo '<button class="btn btn-green" style="margin-left: 10px; margin-bottom: 15px;" type="submit" name="Envoyer" id="envoyer">MODIFIER !</button>'; 
echo '</form>';

<script type="text/javascript">
$(function() {
$("#envoyer").click(function() {
$("#loader").show();
var file = $("#vignette").val();
var address = window.location.protocol + '//' + window.location.hostname;
$.ajax({
  url: address + "/admin/img/" + file,
  success: function(data){
    alert("the file exist");
    // Return false here or true ?
  },
  error: function(data){
   // Return false here or true ?
  }
});

});
});
</script>

4 个答案:

答案 0 :(得分:1)

$。默认情况下,ajax是异步请求。设置async:false并且函数将不会返回,直到调用完成。有关详细信息,请参阅http://api.jquery.com/jquery.ajax/

<script type="text/javascript">
$(function() {
    $("#envoyer").click(function() {
        $("#loader").show();
        var file = $("#vignette").val();
        var address = window.location.protocol + '//' + window.location.hostname;
        $.ajax({
              url: address + "/admin/img/" + file,
              async: false,
              success: function(data){
                    alert("the file exist");
                    return true;
              },
              error: function(data){
                   alert("something went wrong");
                    return false;
              }
        });

    });
});
</script>

答案 1 :(得分:0)

您无法使用javascript验证网址是否存在,并且使用服务器端代码并​​不容易。

如果您正在寻找验证网址格式的方法:https://stackoverflow.com/a/17726973/143269

答案 2 :(得分:0)

在提交之前,你可以先做另一个ajax,看看是否有回应。这里有一些php片段

function is_host($sCheckHost = 'www.google.com'){ //replace google with your domain
    return (bool) @fsockopen($sCheckHost, 80, $iErrno, $sErrStr, 5);
}

function is_file($file){ //crossdomain file
    $file_headers = @get_headers($file);
    if(strpos($file_headers[0], '404') || (strpos($file_headers[0], '302') && strpos($file_headers[7], '404'))) return false;
    else return true;
}

并将其返回到新的ajax函数,这可以解决问题,祝你好运。

答案 3 :(得分:0)

我已经解决了。

我只是想添加return false或true,但我不知道在哪里。 这是我的代码,它可以工作,我可以检查地址是否存在,如果是这种情况我发出警报,用户留在页面中没有任何重新加载。

$(function() {

$("form[name=otsconfig]").submit(function() {
$("#loader").show();
var ret = false;
var file = $("#vignette").val();
var address = window.location.protocol + '//' + window.location.hostname;
$.ajax({
  url: address + "/admin/img/" + file,
  success: function(data){
  alert("Image existante (erreur avec le nom du fichier)...");
  ret = true;
  },
  error: function(data){
  ret = false;
  }
});
return ret;
});
});