简体   繁体   English

Ajax Json成功时未定义对象

[英]Ajax Json undefined object on success

I am trying to use an API request from a widget I have installed but I have noticed that my Json data returns a "Object reference not set to instance of an object" exception on success. 我正在尝试使用已安装的窗口小部件的API请求,但我注意到我的Json数据成功返回“对象引用未设置为对象实例”的异常。

Here is the Json: 这是杰森:

{
  "ApiKey": "d4f37ba05a1941928de3109c8632b1ce", 
  "Text": "tesst%0A", 
  "Language": "en", 
  "Rule": "Preediting_Forum", 
  "Grammar": "1", 
  "Spell": "1", 
  "Style": "1", 
  "SessionMetadata": "Preediting_Forum;0", 
  "RequestFormat": "HTML"
}

Here is the ajax code for the post request: 这是发布请求的ajax代码:

$.ajax({
  url: settings.AcceptServerPath + "/Core/AcceptRequest",
  dataType: "json",
  contentType: "application/json",
  type: "POST",
  async: true,
  cache: true,
  data: jsonData,
  success: function (data) {
    console.log(data);
    handleRequestStatus(data, "ACCEPT");
  },
  complete: function (data) {},
  error: function (error) {
    displayFailedMessage("ACCEPT", configuration.language.errorRequestFailed);
  }
});

What could be the cause? 可能是什么原因?

Edit Here is the C# code: 编辑这里是C#代码:

[HttpPost]
        public ActionResult AcceptRequest(CoreApiRequest requestObject)
        {
            try
            {
                if (requestObject == null || requestObject.Text.Length == 0)
                    requestObject = (CoreApiRequest)(new DataContractJsonSerializer(requestObject.GetType())).ReadObject(Request.InputStream);

                Dictionary<string, string> parameters = new Dictionary<string, string>();

                if (requestObject.ApiKey != null && requestObject.ApiKey.Length > 0)
                {
                    parameters.Add("apiKey", requestObject.ApiKey);
                }
                else
                {
                    parameters.Add("username", requestObject.User);
                    parameters.Add("password", requestObject.Password);
                }

                string text = HttpUtility.UrlDecode(requestObject.Text, System.Text.Encoding.UTF8);  

                parameters.Add("text", text);
                parameters.Add("languageid", requestObject.Language);
                parameters.Add("ruleset", requestObject.Rule);
                parameters.Add("grammar", requestObject.Grammar);
                parameters.Add("spell", requestObject.Spell);
                parameters.Add("style", requestObject.Style);

                parameters.Add("requestFormat", requestObject.RequestFormat);

                if (requestObject.GlobalSessionId != null && requestObject.GlobalSessionId.Length > 0)
                {
                    parameters.Add("globalSessionId", requestObject.GlobalSessionId);
                }

                if (requestObject.IEDomain != null && requestObject.IEDomain.Length > 0)
                    parameters.Add("ieDomain", requestObject.IEDomain);


                if (requestObject.SessionMetadata != null && requestObject.SessionMetadata.Length > 0)
                    parameters.Add("sessionMetadata", requestObject.SessionMetadata);

                var model = AcceptCoreManager.GenericRequest(parameters);
                return Json(model);


            }
            catch (Exception e)
            {
                var errorModel = new CoreApiException(e.Message, "Accept Request Controller");
                return Json(errorModel);
            }

        }

There is also a [RestHttpVerbFilter] for the AcceptRequest. 接受请求还有一个[RestHttpVerbFilter]。 Not sure which one is used in this case... 不知道在这种情况下使用哪个...

i have the same issue, its because the response is 'no content', when the response is 'no content', ie. 我有同样的问题,这是因为响应为“无内容”,即响应为“无内容”。 nothing returned. 什么也没退。 ajax shows undefined object. ajax显示未定义的对象。 so make sure response contains json object. 因此,请确保响应包含json对象。 just try alert(JSON.stringify(data)); 只需尝试alert(JSON.stringify(data));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM