jQuery / ajax POST一个Array /对象到C#代码后面

时间:2012-12-25 10:09:34

标签: c# javascript asp.net ajax webmethod

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

到目前为止,这是我的代码,试图尽可能彻底地完成。

事件(点击后)  

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

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

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

enter image description here

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

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

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]属性,它也能正常工作。

答案 2 :(得分: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();
}

让我知道结果。