2013-07-24 138 views
0

你好,我有下一個Ajax調用登錄。我序列化表單並將數據發送到服務器並返回重定向url鏈接。我的問題是,後門柱我的網址是像Ajax發佈參數ASP.NET MVC 3

http://localhost:50802/?username=&password= and not http://localhost:50802/Home 

$.ajax({ 
       type: "POST", 
       url: "Login/Login", 
       dataType: 'json', 
       contentType: "application/json; charset=utf-8", 
       data: loginJson, 
       cache: true, 
       async: false, 
       complete: function (result) { 
        alert(result.link); 
        window.location.replace = "/Home/Index"; 
       }, 
       error: function() { 
        $("#username").val(""); 
        $("#password").val(""); 
        alert("Wrong Username or Password!"); 
       } 
      }); //end ajax call 

回答

0

看起來你在.click事件提交按鈕或在.submit事件的一種形式寫這$.ajax呼叫而不取消默認操作通過返回從false回調或通過調用preventDefault的論點。這裏是你的代碼應該如何看起來像:

$('#id_of_your_form').submit(function(e) { 
    e.preventdefault(); // <-- That's what I am talking about and what you forgot 

    $.ajax({ 
     type: "POST", 
     url: "Login/Login", 
     dataType: 'json', 
     contentType: "application/json; charset=utf-8", 
     data: loginJson, 
     cache: true, 
     async: false, 
     complete: function (result) { 
      window.location.replace = "/Home/Index"; 
     }, 
     error: function() { 
      $("#username").val(""); 
      $("#password").val(""); 
      alert("Wrong Username or Password!"); 
     } 
    }); //end ajax call 
}); 

而且async: false, ?????你知道這是幹什麼的,是嗎?這不是AJAX。這是一個阻塞的同步呼叫到您的網絡服務器,在此期間客戶端瀏覽器將被凍結,就像在冰河世紀2期間破壞所有用戶體驗一樣。

+0

我把e.preventdefault()它不能解決問題參數仍然存在,我無法讓重定向工作。有趣的是,當我在firebug中使用調試時,它確實重定向後,我通過ajax後xD –

+0

也許你有一些JavaScript錯誤?你能在控制檯中看到他們嗎? –

+0

我沒有在控制檯中看到它們中的任何一個。我可以看到的是它確實在成功函數時提醒我,但它不會像成功一樣更改URL:function(result){ alert(result.link); window.location.href =「/ Home/Index」; }當我調試它時,它會觸發成功功能和重定向工作。 –

0

試着在你的最後返回false提交功能

$('#id_of_your_form').submit(function(e) { 
$.ajax({ 
    type: "POST", 
    url: "Login/Login", 
    dataType: 'json', 
    contentType: "application/json; charset=utf-8", 
    data: loginJson, 
    cache: true, 
    async: false, 
    complete: function (result) { 
     window.location = "/Home/Index"; 
    }, 
    error: function() { 
     $("#username").val(""); 
     $("#password").val(""); 
     alert("Wrong Username or Password!"); 
    } 
}); //end ajax call 
return false; }); 

當然,另一種選擇是從控制器返回正確的redirectlink而不是在Java腳本覆蓋它的。