【发布时间】:2014-06-06 03:35:13
【问题描述】:
我无法通过 ajax 和 json 将 javascript 与 asp.net webforms 方法连接起来。
我在一个文件夹中有 javascript,在另一个文件夹中有 page.aspx,例如: - 帐户/createUser.aspx - 脚本/动作/createuser.js
我已经尝试了很多东西,例如,在方法[Webmethod]之前使用,在ajax动作中改变了很多东西,但没有任何效果。在大多数情况下,谷歌浏览器都会给出错误:
POST .../Account/createUser.aspx/CheckUserName 401(未授权)
如果我在 javascript 行中删除:“dataType: json”和“contentType: application/json; charset=utf-8”,错误就会消失并进入“完成”行...
我需要说明来解决这个问题...我搜索了很多帖子,遵循了很多教程,但没有任何效果。 例如:更改我的 webconfig 以接受任何用户,我的 routeconfig.cs...
有什么东西在倒下吗?什么?我需要声明一些东西才能使用json吗?
Javascript:
$("#USUserName").change(function () {
alert($("#USUserName").val());
$.ajax({
type: "POST",
url: "createUser.aspx/CheckUserName",
data: '{username: "' + $("#USUserName").val() + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function (jsondata, stat) {
if (stat == "success") {
var response = JSON.parse(jsondata.responseText).d;
alert((response));
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert();
}
});
aspx.cs 代码:
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string CheckUserName(string username)
{
var existUser = context.user.Where(us => ((us.username).Equals(username))).Count();
string returnValue = string.Empty;
if (existUser.Equals(0))
{
returnValue = "test- yes!";
}
else
returnValue = "test- no!";
return returnValue;
}
【问题讨论】:
-
也许这是在不同的域中运行?如果是,那么您已经踩到了跨域安全性,jsonp 可以帮助您。
-
不同的文件夹不是不同的域。
-
第一个建议:根据你的浏览器,安装Firefox+Firebug,或者Fiddler,或者Chrome + Web Developer Tools + JSONview。这些将使您能够了解您的 AJAX 请求。否则,作为开发人员,你是盲目的。
标签: c# javascript asp.net ajax json