使用asp.net的jQuery AJAX Post
我在一篇jqueryajax文章中发现了一个错误 我在IE中收到的错误是SyntaxError:无效字符 整个项目可在以下网址找到: 当您将其中一个框移动到另一个位置(单击并拖动)时,会出现ajax post 为了显示错误,我必须将errorajax属性添加到jqueryajax调用中使用asp.net的jQuery AJAX Post,asp.net,jquery,Asp.net,Jquery,我在一篇jqueryajax文章中发现了一个错误 我在IE中收到的错误是SyntaxError:无效字符 整个项目可在以下网址找到: 当您将其中一个框移动到另一个位置(单击并拖动)时,会出现ajax post 为了显示错误,我必须将errorajax属性添加到jqueryajax调用中 function saveOrder() { var data = $("#gallery li").map(function() { return $(this).attr("itemID"); }).get(
function saveOrder() {
var data = $("#gallery li").map(function() { return $(this).attr("itemID"); }).get();
$.ajax({
url: "example.aspx/SaveListOrder",
data: '{ids:["' + data.join('","') + '"]}',
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
error: function(data, status, jqXHR) { alert(jqXHR); }
});
};
代码隐藏方法
[WebMethod]
public static void SaveListOrder(int[] ids)
{
for (int i = 0; i < ids.Length; i++)
{
int id = ids[i];
int ordinal = i;
//...
}
}
[WebMethod]
公共静态void SaveListOrder(int[]id)
{
for(int i=0;i
关于这个问题有什么想法吗?提前谢谢
编辑/回答:
问题出在web.config中。我在web.config中添加了以下httpModule
<configuration>
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
</configuration>
<configuration>
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
</configuration>
如果有人想详细说明为什么需要这样做,那就太好了。一旦我被允许,我将创建一个帖子作为答案
谢谢 对象键必须是双引号字符串。事实上,JSON中的所有字符串都必须用双引号括起来。在代码中,
id
不是双引号。你应该像这样用双引号括起来
data: '{"ids":["' + data.join('","') + '"]}',
您可以使用来轻松验证JSON。尝试向AJAX调用中添加
traditional:true
。我相信你必须设置它才能让数组正确通过。像这样
$.ajax({
url: "example.aspx/SaveListOrder",
traditional: true,
data: '{ids:["' + data.join('","') + '"]}',
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
error: function(data, status, jqXHR) { alert(jqXHR); }
});
这可能与您返回的响应有关。我认为IE要求应用程序也使用json内容类型进行响应。问题在于web.config。我在web.config中添加了以下httpModule
<configuration>
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
</configuration>
<configuration>
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
</configuration>
如果有人想详细说明为什么需要这样做,那就太好了。一旦我被允许,我将创建一个帖子作为答案
谢谢 尝试将
data
设置为实际的javascript对象,而不是json格式的字符串。似乎是json错误。你能显示生成的json数据吗?我不确定“你能显示生成的json数据”是什么意思,也不确定如何传递JavaScript对象并在WebMethod中解释它。你随ajax请求发送的数据。使用alert({ids:[“+”data.join(“,”)+“]}”)
或其他方法。当我使用alert显示数据时,我得到了预期的数据:{ids:[“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”]}我理解你的意思,但我尝试了你的修改却没有运气。我添加了传统的:true,没有运气。我还在调查。我在帖子中发布了项目链接。有人能下载并试一试吗?