我尝试在谷歌地图上绘制点击卡车标记的路线。但是我得到了这个错误"内部服务器错误"
Javascript代码:
function Route(Param)
{
$.ajax({
type: "POST",
url: "Mainpage.aspx/Route",
data: '{"data":"' + Param+ '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d) {
alert(msg.d);
}
else {
alert("Error...");
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
});
//Click truck marker
// call and set parameter Route function
Route(parseInt(dataTruck.TruckId));
背后的代码
Mainpage.aspx.cs
static string _Route;
[WebMethod]
public static string Route (int TruckId)
{
_Route = _DrawRoute(TruckId);
return _Route ;
}
public static string _DrawRoute(int TruckId)
{
// return Serialize rows
}
路线方法返回以下格式:
[{"纬度":37.9137" LNG":28.3708},{"纬度":37.9138" LNG":28.3707 },{"纬度":37.9137" LNG":28.3709},{"纬度":37.9138" LNG":28.3708}]
答案 0 :(得分:1)
这里的内容类型是json,因此必须将数据转换为json格式
您还可以在Web服务方法中从json格式转换 所以你的网络服务看起来像
使用Javascript:
Json_Parameters = JSON.stringify(Param);
$.ajax({
type: "POST",
url: url,
async: false,
data: JSON.stringify({ "RequestParameters": Json_Parameters }),
contentType: "application/json; charset=utf-8",
success: function (result) {
InputHandler(result);
}
});
代码隐藏:
public static string Route (string RequestParameters) {
JavaScriptSerializer ser = new JavaScriptSerializer();
string objRequestData = ser.Deserialize<string>(RequestParameters);
}
答案 1 :(得分:0)
我确实有一些建议。将变量命名为与Javascript构造函数相同并不是一种好的做法。所以我将XMLHttpRequest重命名为jqXHR,这是更具教条性的jquery。另请注意,ajax fn返回XHR obj,它是XMLHttpRequest的超集。
其次,您提供了完整的退货类型:
[{"Lat":37.9137,"Lng":28.3708},{"Lat":37.9138,"Lng":28.3707},{"Lat":37.9137,"Lng":28.3709},{"Lat":37.9138,"Lng":28.3708}]
。
这是一个对象数组,因此使用if(msg.d) { ... }
在数组中使用点表示法是没有意义的(如果一个数组正是你要回来的那个)。 d
属性来自何处?
我先解决这几件事。 让我知道你的发现是什么!