我在html正文中有一个带有“button-account”名称的html按钮,当用户点击按钮时需要用ajax更新aspx页面
我在google chrom中收到此错误
SyntaxError:JSON.parse:意外字符
这在火狐中
SyntaxError:JSON.parse:意外字符
这是我的代码
<script type="text/javascript" >
$(document).ready(function () {
$("#button-account").bind("click", "accountRegister");
function accountRegister() {
var waitObj = "<span class='wait' > <img src='Resource/Images/loading.gif' alt='' /> </span>";
var user = $("[name='username']").val();
var pass = $("[name='password']").val();
var dataObj = {
"username": user,
"password": pass,
};
$.ajax({
type: "POST",
url: "Checkout.aspx/login",
data: dataObj,
contentType: "application/json; charset=utf-8",
dataType: "json",
beforSend: function () {
$(this).attr("disabled", "true");
$(this).after(waitObj);
},
success: function (msg) {
// Replace the div's content with the page method's return.
alert("success");
$("#checkout").slideUp("slow");
$("#payment-address").slideDown("slow");
},
error: function (msg) {
alert("error");
},
complete: function () {
$(this).attr("disabled", "false");
$(".wait").remove();
},
});
}
});
</script>
这是我的webmethod
[WebMethod]
public static string login()
{
//bool UserIsValid = false;
//string userName = "";
//string pass = "";
//MembershipUser u = Membership.GetUser(userName);
//pass = u.GetPassword();
//if (UserIsValid)
//{
// // returnAsHtml = "true";
//}
//else
//{
// //returnAsHtml = "use is not valid";
//}
JavaScriptSerializer js = new JavaScriptSerializer();
string result = js.Serialize("{ a:'1' }");
return result;
}
和fiddler返回200状态。 但返回HTML 。我知道这是我的错。如何解决?
任何帮助都很合适......
答案 0 :(得分:2)
服务器可能会返回错误页面(例如"<html> ..."
),而不是您预期的JSON响应。
使用fiddler,chrome的开发人员工具或类似工具来检查服务器返回的确切答案。
回应你的意见:
检查返回的HTML页面的内容。这可能是由服务器端代码(例如未处理的异常)或服务器端配置引起的错误。
答案 1 :(得分:1)
更改此
var dataObj = {
"username": user,
"password": pass,
};
到此
var dataObj = {
"username": user,
"password": pass
};
传递后您有一个额外的逗号,
("password": pass,
),因此无法正确序列化。
修改强>
试试这个
[WebMethod]
public static string login()
{
//bool UserIsValid = false;
//string userName = "";
//string pass = "";
//MembershipUser u = Membership.GetUser(userName);
//pass = u.GetPassword();
//if (UserIsValid)
//{
// // returnAsHtml = "true";
//}
//else
//{
// //returnAsHtml = "use is not valid";
//}
//JavaScriptSerializer js = new JavaScriptSerializer();
//string result = js.Serialize("{ a:'1' }"); // no need to serialize
return "{ a:'1' }";
}
答案 2 :(得分:-1)
很抱歉!!!
在其他部分a中称为
$('#button-login').live('click', function () {
$.ajax({
url: 'Checkout.aspx?login',
type: 'post',
data: $('#checkout #login :input'),
dataType: 'json',
beforeSend: function () {
$('#button-login').attr('disabled', true);
$('#button-login').after('<span class="wait"> <img src="Resource/Images/loading.gif" alt="" /></span>');
},
complete: function () {
$('#button-login').attr('disabled', false);
$('.wait').remove();
},
success: function (json) {
$('.warning, .error').remove();
if (json['redirect']) {
location = json['redirect'];
} else if (json['error']) {
$('#checkout .checkout-content').prepend('<div class="warning" style="display: none;">' + json['error']['warning'] + '</div>');
$('.warning').fadeIn('slow');
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});