【问题标题】:jQuery/ajax POST an Array / objects to C# code behindjQuery/ajax POST 一个数组/对象到 C# 代码后面
【发布时间】:2012-12-11 08:49:21
【问题描述】:

当我尝试通过其他问题来学习时,我仍然无法让它发挥作用

这是我目前为止的代码,尽量做到彻底。

事件(点击)

var resluts = []; //its a collections of id's - list items of unsorted list as strings 
$('#next').click(function() {
    var RLength = resluts.length;
    alert(resluts);
});​

ajax POST

function UbpdateSecondStage(arr) {

    var WebMethod ="GetSecondStageData";
    var page ="Default.aspx/";
    var target = page + WebMethod;
    var SendParameters = Sys.Serialization.JavaScriptSerializer.serialize(arr);
    jQueryAjxUpdt(target, SendParameters);

}


function jQueryAjxUpdt(targetUrl, SentPars) {
    $.ajax({
              type: 'POST',
              url: targetUrl,
              data: {
                     'sentobj':SentPars

              },
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function (data) {
                                  //alert(data);
              }

   });
}

C#

  [WebMethod]
  public static string GetSecondStageData(object sentobj)
  {
      var x = sentobj;
    return ?? ...do i have to give a return.. even if i do not require one ?
  }

我的代码有什么问题?这是我第一次尝试这种方法。 谢谢。

我已经更新了几次,请再读一遍

【问题讨论】:

  • 什么是结果?
  • 我在代码后面设置了一个断点,我什至无法让调试器到达那个点(就像它不触发一样)。所以两个选项,我的代码不正确,第二个选项我的 VS 或 Windows 有问题或一些错误
  • 我对结果也很感兴趣。

标签: c# javascript asp.net ajax webmethod


【解决方案1】:

请尝试以下代码

JavaScript

function UbpdateSecondStage(arr) {
    var WebMethod ="GetSecondStageData";
    var page ="Default.aspx/";
    var target = page + WebMethod;
    var SendParameters =arr;
    jQueryAjxUpdt(target, SendParameters);

}

function jQueryAjxUpdt(targetUrl, SentPars) {
          $.ajax({
              type: "POST",
              url: targetUrl,
              data: '{"results": "' + SentPars + '"}',
              contentType: "application/json; charset=utf-8",
              processData: false,
              dataType: "json",
              success: function(msg) {
              //alert(msg);
                 here your code
              },
              error: function(x, e) {
                  if (x.status == 500) {
                      alert("An error has occurred during processing your request.");
                  }
              }
          });
      }

C#

[WebMethod]
public static string GetSecondStageData(object results)
{
    var x = results;
    return DateTime.Now.ToString();
}

告诉我结果。

【讨论】:

    【解决方案2】:

    首先,您应该指定要传递的内容(发送到服务器)以及从服务器返回的响应(如果幸运的话;))。如果它抛出或引发任何错误,那么也应该指定它。
    其次不需要使用下面的代码。

    var WebMethod ="GetSecondStageData";
    var page ="Default.aspx/";
    var target = page + WebMethod;
    var SendParameters = Sys.Serialization.JavaScriptSerializer.serialize(arr);
    

    你也可以这样工作

    var test=new Object();
    test.myArray=arr;
    jQueryAjxUpdt("<Relative path to the directory such as '../home/default.aspx' >", JSON.stringify(test))
    

    再次改变ajaxFunction如下

    function jQueryAjxUpdt(targetUrl, SentPars) {
    $.ajax({
              type: 'POST',
              url: targetUrl,
              data: SentPars,
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function (data) {
                                  //alert(data);
              }
        });
    }
    

    尚未测试,但我想它会起作用,如果没有,请告诉我。 ;-)
    最后,我猜您的 default.aspx 页面中除了 @page 指令之外没有保留任何内容,即使您没有指定 [WebMethod] 属性,它也可以工作。

    【讨论】:

    • 我会试试的,谢谢,你可以看看,现在是最终更新
    • 天哪,我犯了一个小错误,不要使用 $.parseJSON 而应该使用 JSON.stringify(test);
    • 因为它是在评论中@palash 代码的帮助下解决的,因为他是第一个回答的人,所以我选择将其标记为正确答案。非常感谢您的帮助,我将再次查看您的代码以了解更多信息。谢谢
    【解决方案3】:

    像这样修改你的WebMethod,然后重试:

    [WebMethod]
    public static string GetSecondStageData(object sentobj)
    {
        var x = sentobj;
        return DateTime.Now.ToString();
    }
    

    【讨论】:

    • @LoneXcoder:由于GetSecondStageData web 方法的返回类型为字符串,因此您需要返回一个字符串。
    • 仍然无法正常工作,我只是想问一下,就像现在一样(看看这个评论的时间)它应该工作吗?否则我会尝试解决 OS 和 VS 2010 问题,例如删除解决方案文件或移动项目...等'...谢谢
    • 好的,只需像这样修改数据部分data: "{ sentobj: " + SentPars + " }",
    • 哈! ,非常感谢老兄。我非常想感谢上帝(:真的很痛苦,我不喜欢 Visual Studio 中的 js,因为我缺乏知识和调试工具
    猜你喜欢
    • 2013-03-19
    • 2012-06-22
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 2019-01-22
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多