我有一张表格, 我的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>
答案 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;
});
});