如何在 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
    }

路由方法返回此格式:

[

如何在 ajax POST 中发送参数

{"纬度":37.9137,"Lng":28.3708},{"纬度":37.9138,"Lng":28.3707},{"纬度":37.9137,"Lng":28.3709},{"纬度":37.9138,"Lng":28.3708}]

这里的内容类型是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属性从何而来?

我会先解决这几件事。让我知道你的发现是什么!