2014-01-27 62 views
1

我想使用AJAX与ASP.NET的第一次 - 由试图通过我的相应的aspx页面下面的数据,以一个WebMethod:无法将数据传递到方法

$.ajax({ 
    type: "POST", 
    url: "myurl.aspx/SaveScreen", 
    data: "{'data': " + JSON.stringify(arrayRows.data) + "}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     alert(msg.d); 
    } 
}); 

这里是我的WebMethod在aspx页面中。我试过传递一个简单的数据对象,其中只包含一个键和值,这成功地工作。当试图通过这个对象,我得到一个错误,指出存在与代码500

什么可能我是做错了内部服务器错误?

+0

你绝对不应该连接字符串当一个对象定义可以用来代替。 Concats的可读性要差得多。 –

+0

Web方法中的参数数据类型是什么? –

回答

2

试试这个: data: {"data": JSON.stringify(arrayRows.data)}

+0

这是明智的解决方案,而不是连接字符串,我从你第一张贴了这个解决方案的其他编辑注意。 –

+0

我更喜欢连接字符串 - 谢谢! –

0

你可以换的数据串的语录:

$.ajax({ 
    type: "POST", 
    url: "SpecifyPositioning.aspx/SaveScreen", 
    data: "{'data': '" + JSON.stringify(arrayRows.data) + "'}", //Added ' around JSON.stringify to pass string instead of object 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     alert(msg.d); 
    } 
}); 

然而,这将是一个清洁的解决方案:

data: {"data": JSON.stringify(arrayRows.data)}, 
+0

这已经解决了这个问题,谢谢。是否可以传递数据而不需要串联?如果是这样,怎么样? –

+0

你不能传递一个'Array'到'WebMethod'直接就我知道的,所以'JSON.stringify'只更换我所知道的是'arrayRows.data.join()' –

+0

你后来添加的是明智的方式来做到这一点。将对象定义创建为字符串(不需要时)会增加无意义的复杂层次。 –

0

试试这个:

data: "{data: '" + JSON.stringify(arrayRows.data) + "'}" 
+0

为什么downvote? – Plue

+0

虽然它“有效”,但为对象定义创建字符串不仅毫无意义,而且会导致不良做法。最新的答案是正确的做法。然而,我看到有人同情你,并已上投...击败投票的整个目的:) –

+0

所以我应该用**数据:{“数据名”:stringValue的} **呢? – Plue

相关问题