2014-02-07 1 views
0

양식이 있습니다. 내 JS 코드가 HTML 양식 아래에 있습니다.데이터를 성공적으로 전송할 경우 제출 버튼을 방지하려면 어떻게해야합니까?

경고가 나타나기를 원할 경우 (파일이있는 것처럼) 은 제출 확인 (페이지 새로 고침)을 막을 경우.

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> 

답변

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> 
+0

이것은 내가 감사 한 것입니다. 아래를보십시오. – user3162341

0

자바 스크립트를 사용하여 URL이 존재하는지 여부를 실제로 확인할 수는 없으며 서버 측 코드로 수행하기가 쉽지 않습니다. 응답이있는 경우 제출하기 전에, 단지보고, 먼저 다른 아약스을 할 수 https://stackoverflow.com/a/17726973/143269

0

:

당신은 형식 URL의을 검증 할 수있는 방법을 찾고 있다면. 여기에 몇 가지 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; 
} 

을 니펫 새로운 아약스 기능이 반환이 트릭, 행운을 할 수 있습니다.

+0

아, 내 질문에 오해 한 것 같습니다. 주소가 없으면 아약스 세계는 오류를 반환합니다. 지금 질문은 무엇입니까? 내 말은, 그것은 true 또는 false를 반환 할 수 없다는 것입니다. 단지 오류를 반환합니다 :-) – ddlab

0

해결했습니다.

단지 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; 
}); 
}); 
관련 문제