如何在ajax POST中发送参数?

时间:2014-11-14 10:04:29

标签: javascript c# jquery asp.net-ajax

我尝试在谷歌地图上绘制点击卡车标记的路线。但是我得到了这个错误"内部服务器错误"

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}]

2 个答案:

答案 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)

对我来说调试任何发生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属性来自何处?

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