目前,我有一个用户在ajax bing地图上创建了很多点。当用户按下“提交”按钮时,我想将所有位置存储在map.entities中,我构建了一个xml格式的字符串,我想将其保存在我的数据库中:
<locations> <location><lat><lon>1.234</lon></lat></location>.....</locations>
,所以在构建我的XML字符串后,这不是一个问题,我将它存储在变量位置并执行:
$. ajax({
type: "POST",
url: "myPage.aspx/saveLocations"
data: {"xmlLoc: x"},
async: true,
cache: false,
success: alert ("success" + msg)
error: ....
但不幸的是,这似乎不是传递我的数据的方式。这是我唯一一次获得成功,但是这个消息没有得到充分体现!
如果我写 数据:x,&lt; - 我在这里遇到的问题是我从客户那里获得了潜在的危险请求
我的服务器端代码:
[Web Method]
public static string saveLocations(string s)
{
return s; //just for testing purposes
}
我不确定如果我必须使用json或其他东西,我是一个初学者,所以我不知道从哪里开始!非常感谢你
编辑:我正在尝试另一种解决方法,但我总是得到无效的json原语错误!!!
var locations = '{ "location" : [';
function createBoundary() {
for (x = 0; x < map.entities.getLength(); x++) {
var pin = map.entities.get(x);
locations += '{ "latitude": "' + pin.getLocation().latitude +'", "longitude": "' + pin.getLocation().longitude + '"},';
}
locations += ']}';
jQuery.ajax({
type: "POST",
url: "Profiles_Schedules.aspx/GetXmlLoc",
data: eval("(" + locations + ")"),
contentType: "application/json;charset=utf-8",
datatype: "json",
async: true,
cache: false,
success: function (msg) {
alert("Success " + msg.d);
},
error: function (x, e) {
alert("The call to the server side failed. " + x.responseText);
}
});
}
答案 0 :(得分:2)
尝试添加数据类型:
dataType: "json",
此外,我认为您的数据应该是“s”而不是“xmlLoc”,因为这就是您在行动中寻找的内容。
并尝试更改您的操作:
[HttpPost]
public static string saveLocations(string s)
{
return s; //just for testing purposes
}
答案 1 :(得分:1)
我不确定接收端,但您的数据不会以可识别的格式传递。 jQuery.ajax()
对数据格式设置intelligent guess,但最快的转换是JSON:
data: '{"xmlLoc":"x"}'
引号是正确的JSON格式所必需的。
答案 2 :(得分:1)
尝试将代码更改为以下内容:
data: {"s":"x"}
Even on JSON's site,如果要将字符串转换为字符串,则必须使用引号格式化键/值对。我会建议你的密钥命名与你的参数相同。
Per the MSDN on WebMethod我最初认为这可能无法通过WebMethodAttribute工作,因为它使用SOAP调用。但是,this SO question很有意思,因为它声明JSON将格式化为适当的SOAP格式。有点好:)
但是,以上确实让我觉得你的json密钥需要与你的方法签名的命名相匹配才能使序列化工作