我偶尔会从AJAX.NET应用程序中获取以下弹出窗口
Sys.WebForms.PageRequestManagerServerErrorException: An Unknown error occurred while processing the request on the server. The status code returned from the server was: 12031
从Microsoft kb,状态代码指示ERROR_INTERNET_CONNECTION_RESET,但它没有说明首先触发错误的根本问题是什么.
如何记录/跟踪/ etc生成弹出窗口的基础错误?
如何判断方法是否在AJAX回发的上下文中运行(即作为UpdatePanel(异步)回发的结果)?
根据egoldin Page.IsAsync是一个非常常见的混淆,与AJAX完全无关.
正确的方法是使用ScriptManager.GetCurrent(页面).IsInAsyncPostBack.
我无法反序列化我的JSON字符串.我有一个person带有公共属性的类,类型为int,first name和last name.我想以JSON格式传递这些对象的数组,并将它们反序列化为一个列表,以便我可以在服务器上循环它们,但ASP.NET说不支持被反序列化为数组.我已经验证了我正在制作的JSON,它是有效的.ASP.NET在反序列化之前需要具有哪些特殊的JSON?有趣的是,如果我将列表<person>对象序列化为JSON,它看起来就像我正在生成的JSON.我必须遗漏一些东西......为了澄清,我正在使用ASP.NET Ajax库进行反序列化.这是我从Web服务中获得的:
{"Message":"Type\u0027System.Collections.Generic.IDictionary`2 [[System.String,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.Object,mscorlib,Version = 2.0 .0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]\u0027不支持反序列化数组."
实际上不幸的是,这似乎与反序列化没有任何关系,看起来你无法将一组JSON对象传递给asmx web服务.我对么?如果你不能这样做,是否可以将一组JSON对象传递给Web服务并使用ASP.NET和C#在服务器上处理它们?
好的,这是我的代码.这是人类:
public class person
{
public person()
{
//
// TODO: Add constructor logic here
//
}
public int seq
{
get;
set;
}
public string firstName
{
get;
set;
}
public string lastName
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的JSON字符串:
[{"seq":1,"firstName":"Chris","lastName":"Westbrook"},
{"seq":2,"firstName":"sayyl","lastName":"westbrook"}]
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码
[WebMethod]
public void updatePeople(string json)
{
IList<person> people =
new JavaScriptSerializer().Deserialize<IList<person>>(json);
//do stuff... …Run Code Online (Sandbox Code Playgroud) 我在这里有一个JsFiddle ,并添加了Microsoft AJAX以通过外部JS /资源部分加载.如何在AJAX文件加载完成后判断我的JS代码是否运行?
似乎AJAX也没有加载.:(
这是JSFiddle中的代码:
Type.registerNamespace("Tutorial.Chapter1");
Tutorial.Chapter1.Person = function(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
};
Tutorial.Chapter1.Person.prototype = {
set_firstName: function(value) {
this._firstName = value;
},
get_firstName: function() {
return this._firstName;
},
set_lastName: function(value) {
this._lastName = value;
},
get_lastName: function() {
return this._lastName;
},
_firstName: "",
_lastName: "",
displayName: function() {
alert("Hi! " + this._firstName + " " + this._lastName);
}
};
Tutorial.Chapter1.Person.registerClass("Tutorial.Chapter1.Person", null);
Run Code Online (Sandbox Code Playgroud) 我使用数据值作为对象文字,而不是连接一个字符串,如本答案中所述
我的代码如下:
$.ajax({
url: "../Member/Home.aspx/SaveClient",
type: "POST",
async: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: {
"projectSoid": ProjectId,
"startDate": StartDate,
"endDate": EndDate,
"clientManager": ClientManager
},
success: function(response) {
if (response.d != "") {
}
},
error: function(response) {
var r = jQuery.parseJSON(response.responseText);
alert("Message: " + r.Message);
alert("StackTrace: " + r.StackTrace);
alert("ExceptionType: " + r.ExceptionType);
}
})
Run Code Online (Sandbox Code Playgroud)
我的网络方法是这样的:
[WebMethod]
public static string SaveClient(string projectSoid, string startDate,
string endDate, string clientManager)
{
...
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
消息:无效的JSON原语:projectSoid
根据Microsoft的说法,FileUpload控件与AJAX UpdatePanel不兼容.
我知道可以将PostBackTrigger添加到表单的提交按钮,如下所示:
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
Run Code Online (Sandbox Code Playgroud)
问题在于,这会强制表单执行完整的回发,从而避免了首先使用UpdatePanel的整个过程.是否有解决此问题的方法不会导致整个页面刷新?
我使用YuiCompressor压缩我自己的JS,但是有没有理由说明MicrosoftAjax.js没有缩小?或者是否有一些设置来说运行它的压缩版本(如果有压缩版本).或者我是否需要对其进行反编译并自行缩小脚本资源?
我在网络浏览器中遇到了一个问题.当我点击它在控制器中传递的链接并正确加载数据时,我有一个调用表单的ajax调用,在其他浏览器中.但是在IE中,当它加载一次时,它会带来相同的旧结果,而不会传入控制器.
我有一个生成的表单,<% Ajax.BeginForm() {} %>其中包含大量的输入和texareas.
当输入值改变时,我需要知道它并将输入和表单标记为"脏".如果用户试图不保存而离开页面,我会要求他或她确认放弃更改.
有关如何做到这一点的任何建议?
我有一个ajax请求使用"POST"很好,但当使用"GET"它给我以下错误,
{"Message":"An attempt was made to call the method \u0027GetSomething\u0027
using a GET request, which is not allowed.","StackTrace":" at
System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData
methodData, HttpContext context)\r\n at
System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context,
WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
Run Code Online (Sandbox Code Playgroud)
所以这是我的代码,在客户端,
function test() {
$.ajax({
url: "Default4.aspx/GetSomething",
type: "GET",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (res) { debugger; alert(res.d); },
error: function (res) { debugger; alert("error"); }
});
}
Run Code Online (Sandbox Code Playgroud)
在服务器端,
[WebMethod]
public static string GetSomething()
{
return "got something";
}
Run Code Online (Sandbox Code Playgroud)
使用"GET"时我得到错误的任何原因??
asp.net-ajax ×10
asp.net ×5
jquery ×3
javascript ×2
updatepanel ×2
.net ×1
ajax ×1
asp.net-mvc ×1
c# ×1
caching ×1
file-upload ×1
jsfiddle ×1
json ×1
minify ×1
webmethod ×1