2017-12-20 12 views
0

jQueryリダイレクトが遅すぎて別のページに接続できません。試しましたwindow.location.replacewindow.location.hrefwindow.locationです。リダイレクトを高速化する方法はありますか?jQueryリダイレクトが遅すぎる

<form role="form" id="add_name" method="post" enctype="multipart/form-data" action=""> 
    <div class="form-group modal-form"> 
    <input type="text" class="form-control" id="email_id" name="email_id"> 
    </div> 
    <div class="form-group modal-form"> 
     <input type="text" class="form-control" id="contact" name="contact" > 
     </div> 
     <button type="submit" class="btn btn-popup" name="submit" id="submit">save</button> 
    </div> 
    </div> 
</form> 
<script> 
    $("form#add_name").submit(function(e) { 
    e.preventDefault(); 
    var formData = new FormData(this); 
    $.ajax({ 
     url: "device_process.php", 
     type: 'POST', 
     data: formData, 
     success: function(data) { 
     window.location = "thankyou.php"; 
     }, 
     cache: false, 
     contentType: false, 
     processData: false 
    }); 
    }); 
</script> 
+6

は、ここに私の答えです。遅いのは、あなたのAPIが遅いか遅いネットワークであることによって引き起こされる可能性があります。 – cdoshi

+0

あなたはajaxをやっているのですか? – madalinivascu

+0

別の方法で待機を処理する方法おそらくスピナーを表示しますか?その後、コールバックが完了したらリダイレクトします。 –

答えて

1

これは、サーバー側のコードが要求を処理するのに時間がかかることが原因である可能性があります。そのような場合は、進行中のローダーを追加して、要求が進行中であることをユーザーに通知する方がよいでしょう。実装が非常に簡単です。以下のコードを試してください。これは動作します。お役に立てれば。おかげ

INSIDE BODY:

<div id="loading" style="display: none;"><div>Loading, Please wait...</div></div> 

CSS:

#loading { 
    position: fixed; 
    width: 100%; 
    height: 100%; 
    margin: 0; 
    padding: 0; 
    top: 0; 
    left: 0; 
    background-color: #DBDBDB; 
    opacity: .9; 
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; 
    filter: alpha(opacity=90); 
    z-index: 99999; 
    display: none; 
} 

#loading>div{ 
    position: fixed; 
top: 50%; 
left: 50%; 
margin-left: -102px; 
width: 205px; 
height: 60px; 
text-align: left; 
background: url('../img/loading.gif') no-repeat; //add a loader image to your local 
margin-top: -30px; 
padding: 8px 0 0 35px; 
} 

JS:。

$(document).ajaxStart(function() { 

    $("#loading").fadeIn(); 

}).ajaxStop(function() { 

    $("#loading").fadeOut(); 

    $(document).foundation(); 

}); 
+0

はそれが役に立ちましたか? –

+0

ありがとう、私はローダーを追加しました... –

0

私はjqueryのタイムアウト()関数を使用しました。 Ajaxはレスポンスを返すときは、リダイレクトされ

<script> 
$("form#add_name").submit(function(e) { 
e.preventDefault(); 
var formData = new FormData(this); 
$.ajax({ 
    url: "device_process.php", 
    type: 'POST', 
    data: formData, 
    success: function (data) { 
     // window.location = "thankyou.php?id=<?php echo htmlspecialchars($devices); ?>"; 

    }, 
    cache: false, 
    contentType: false, 
    processData: false, 

}); 
timeout:2000 , 
window.location = "thankyou.php?id=<?php echo htmlspecialchars($devices); ?>"; 
}); 
</script>