如何在 ajax POST 中发送参数
本文关键字:参数 POST ajax | 更新日期: 2023-09-27 18:30:17
>我尝试在谷歌地图上绘制点击卡车标记的路线。但是我得到这个错误"内部服务器错误"
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));
代码隐藏
主页.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
}
路由方法返回此格式:
[
这里的内容类型是json,因此有必要将数据转换为json格式
您还可以在 Web 服务方法中从 JSON 格式转换所以你的 Web 服务看起来像
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);
}
对我来说,
调试Ajax代码中发生的任何事情有点困难,因为我没有太多的上下文。
但。。。
我确实有几个建议。将变量命名为与 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
属性从何而来?
我会先解决这几件事。让我知道你的发现是什么!