पर जेसन ऑब्जेक्ट लौट रहा है मैं इसे ठीक से काम करने का प्रयास कर रहा हूं (2 दिन अब)। मैं एक लॉग पर काम कर रहा हूं जहां मैं jQuery से नियंत्रक कार्रवाई को बुला रहा हूं, इसे एक JSON ऑब्जेक्ट पास कर रहा हूं (json2.js का उपयोग कर रहा हूं) और नियंत्रक से एक जेसन ऑब्जेक्ट लौटा रहा हूं।कंट्रोलर एक्शन से jQuery
{"Message":"Invalid username/password combination"}
और यूआरएल http की तरह दिखता है: मैं कार्रवाई ठीक कॉल करने के लिए, लेकिन इसके बजाय प्रतिक्रिया जहाँ मैं यह चाहते डाल करने के लिए यह सिर्फ इस स्क्रीन पर मुद्रित के साथ एक नई विंडो खोलता में सक्षम होने के लिए सक्षम हूँ : // localhost: 13719/खाता/लॉगऑन इसलिए कार्रवाई को कॉल करने और पृष्ठ को फिर से लोड करने के बजाय यह उपयोगकर्ता को नियंत्रक को ले जा रहा है, जो अच्छा नहीं है।
तो अब कुछ कोड, पहले नियंत्रक कोड
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl = "")
{
if (ModelState.IsValid)
{
var login = ObjectFactory.GetInstance<IRepository<PhotographerLogin>>();
var user = login.FindOne(x => x.Login == model.Username && x.Pwd == model.Password);
if (user == null)
return Json(new FailedLoginViewModel { Message = "Invalid username/password combination" });
else
{
if (!string.IsNullOrEmpty(returnUrl))
return Redirect(returnUrl);
else
return RedirectToAction("Index", "Home");
}
}
return RedirectToAction("Index", "Home");
}
और jQuery कोड
$("#signin_submit").click(function() {
var login = getLogin();
$.ajax({
type: "POST",
url: "../Account/LogOn",
data: JSON.stringify(login),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
error: function (xhr) {
$("#message").text(xhr.statusText);
},
success: function (result) {
}
});
});
function getLogin() {
var un = $("#username").val();
var pwd = $("#password").val();
var rememberMe = $("#rememberme").val();
return (un == "") ? null : { Username: un, Password: pwd, RememberMe: rememberMe };
}
मामले में आप यहाँ वास्तविक लॉगिन प्रपत्र को देखने के लिए है कि रूप में अच्छी तरह
की जरूरत के लिए<fieldset id="signin_menu">
<div>
<span id="message"></span>
</div>
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { @id = "signin" }))
{%>
<% ViewContext.FormContext.ValidationSummaryId = "valLogOnContainer"; %>
<%= Html.LabelFor(m => m.Username) %>
<%= Html.TextBoxFor(m => m.Username, new { @class = "inputbox", @tabindex = "4", @id = "username" })%><%= Html.ValidationMessageFor(m => m.Username, "*")%>
<p>
<%= Html.LabelFor(m=>m.Password) %>
<%= Html.PasswordFor(m => m.Password, new { @class = "inputbox", @tabindex = "5", @id = "password" })%><%= Html.ValidationMessageFor(m => m.Password, "*")%>
</p>
<p class="remember">
<input id="signin_submit" value="Sign in" tabindex="6" type="submit"/>
<%= Html.CheckBoxFor(m => m.RememberMe, new { @class = "inputbox", @tabindex = "7", @id = "rememberme" })%>
<%= Html.LabelFor(m => m.RememberMe) %>
<p class="forgot"> <a href="#" id="forgot_password_link" title="Click here to reset your password.">Forgot your password?</a> </p>
<p class="forgot-username"> <a href="#" id="forgot_username_link" title="Fogot your login name? We can help with that">Forgot your username?</a> </p>
</p>
<%= Html.ValidationSummaryJQuery("Please fix the following errors.", new Dictionary<string, object> { { "id", "valLogOnContainer" } })%>
<% } %>
</fieldset>
लॉगिन फॉर्म मुख्य पृष्ठ पर
के साथ लोड किया गया है<% Html.RenderPartial("LogonControl");%>
सुनिश्चित नहीं है कि इसका इस पर कोई असर पड़ता है या नहीं, लेकिन सोचा कि मैं इसका उल्लेख करूंगा।
संपादित करें: लॉगिन प्रपत्र ट्विटर लॉगिन के समान ही भरी हुई है,
मेरी खुशी प्राप्त करता है। और एक विस्तृत समाधान पोस्ट करने के लिए धन्यवाद .. – Baz1nga
@psycho मुझे यहां एक ही समस्या थी। इस तथ्य के अलावा कि जब jQuery के माध्यम से कॉल किया जाता है तो ActionResult के रूप में रीडायरेक्ट काम नहीं करेगा, मुख्य कारण यह है कि आपका पहला कोड "जेसन फ़ाइल" लौटा रहा है क्योंकि आपके पास सबमिट फ़ंक्शन में 'वापसी झूठ नहीं है', इस प्रकार, JSON को "फ़ाइल" के रूप में वापस कर रहा है। –