【问题标题】:object properties is null after ajax callback in asp.net webmethod在 asp.net webmethod 中的 ajax 回调后对象属性为空
【发布时间】:2014-10-31 06:49:37
【问题描述】:

这不是 asp.net mvc,这是 asp.net webforms

我正在尝试像这样发送对象文字

templateProperties = {}

和我这样的 ajax 调用

$.ajax({
    beforeSend:updateTemplateProperties,
    type: "POST",
    url: templatePropertiesUpdateUrl,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    data: JSON.stringify({ "templateProperties": templateProperties }),
}).done(function (data) {
    log(data.d);
});

我在发送前调用函数:

updateTemplateProperties = function () {

    templateProperties.NameFont = "qwq";
    templateProperties.NameBold = true;
    templateProperties.NameItalic = false;
    templateProperties.NameFontColor = "#FFF";
    templateProperties.NamePositionX = 52;
    templateProperties.NamePositionY = 896;
    templateProperties.NameSize = 23;

    templateProperties.DateFont = "ssda";
    templateProperties.DateBold = false;
    templateProperties.DateItalic = true;
    templateProperties.DateFontColor = "#EEE";
    templateProperties.DatePositionX = 47;
    templateProperties.DatePositionY = 236;
    templateProperties.DateSize = 12;

}

adn 我的 webmethod 是这样的

[WebMethod]
public static string UpdateTemplateProperties(TemplateProperties templateProperties)
{
    var serializer = new JavaScriptSerializer();
    return serializer.Serialize(templateProperties);
}

这是我的 TemplateProperties 类

[Serializable]
public class TemplateProperties
{
    public  string NameFont { get; set; }
    public  string NameBold { get; set; }
    public  string NameItalic { get; set; }
    public  string NameFontColor { get; set; }
    public  string NamePositionX { get; set; }
    public  string NamePositionY { get; set; }
    public  string NameSize { get; set; }

    public  string DateFont { get; set; }
    public  string DateBold { get; set; }
    public  string DateItalic { get; set; }
    public  string DateFontColor { get; set; }
    public  string DatePositionX { get; set; }
    public  string DatePositionY { get; set; }
    public  string DateSize { get; set; }
}

在检查 templateProperties 时,我发现整个对象属性等于 null

{"NameFont":null,"NameBold":null,"NameItalic":null,"NameFontColor":null,"NamePositionX":null,"NamePositionY":null,"NameSize":null,"DateFont":null,"DateBold":null,"DateItalic":null,"DateFontColor":null,"DatePositionX":null,"DatePositionY":null,"DateSize":null}

我没有从这个电话中得到任何错误,我已经尝试了我所知道的一切,但它不起作用 通常我将参数一个一个一个一个地传递给webmethod,但是这次它们太多了,所以我想将整个对象作为一个实体发送

【问题讨论】:

  • 您何时、何地以及如何检查模板属性?尝试更紧密地发布您的代码,因为操作顺序对您的问题相当重要。
  • 1:在浏览器调试工具的控制台中,2:在visual studio 3中的调试模式下:这就是全部代码!
  • 这并没有告诉我 which templateProperties 是空的,但我想我知道问题是什么。
  • 请把问题读到最后,我已经在问题的最后发布了 ajax 调用的返回结果。在visual studio的调试模式下也是如此
  • @sacho 你刚刚添加的答案在哪里!!!

标签: javascript c# asp.net ajax webforms


【解决方案1】:

由于某种原因,beforeSend 回调函数 updateTemplateProperties 被调用,但 templateProperties 在发送数据之前没有被正确初始化,我只是在开始 ajax 调用之前调用了 updateTemplateProperties 函数,它现在正在工作,但我真的不知道为什么它不能这样工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    相关资源
    最近更新 更多