Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用asp.net的jQuery AJAX Post_Asp.net_Jquery - Fatal编程技术网

使用asp.net的jQuery AJAX Post

使用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(

我在一篇jqueryajax文章中发现了一个错误

我在IE中收到的错误是SyntaxError:无效字符

整个项目可在以下网址找到:

当您将其中一个框移动到另一个位置(单击并拖动)时,会出现ajax post

为了显示错误,我必须将errorajax属性添加到jqueryajax调用中

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,没有运气。我还在调查。我在帖子中发布了项目链接。有人能下载并试一试吗?