2015-09-18 75 views
0

我Ajax调用如下Ajax调用返回200 OK,但不调用Web方法

$.ajax({ 
    type: "POST", 
    url: "MainPortal/VirtualRoomService.asmx/SaveJunit", 
    data: JSON.stringify({ 
    xjunit: junit, 
    data: editor.getData().trim() 
    }), 
    contentType: "application/json; charset=utf-8", 
    async: false, 
    dataType: "json", 
    success: function(result) { 
    if (result.d.split('|')[0] != "-1") { 
     $("#<%=lblMessage.ClientID%>").text("Junit saved successfully"); 
    } else { 
     $("#<%=lblMessage.ClientID%>").text(result.d.split('|')[1]); 
    } 
    }, 
    error: function(result) { 
    if (result.status == 200 && result.statusText == 'OK') {} else { 
     alert("FAILED : " + result.status + ' ' + result.statusText); 
    } 
    } 

}); 

下面是的.asmx Web服务定义SaveJunit代码

[WebMethod(EnableSession = true)] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string SaveJunit(string xjunit, string data) 
{ 
    try 
    { 
     #region JunitInformation 
     XmlDocument doc = new XmlDocument(); 
     doc.LoadXml(xjunit); 
     XmlElement xRoot = doc.DocumentElement; 
     XmlNode xmlJunit = xRoot.SelectSingleNode("/junit"); 
     XmlNode xType = xRoot.SelectSingleNode("/junit/type"); 
     XmlNode xInfo = xRoot.SelectSingleNode("/junit/info"); 

     MJunitList mJunitList = MJunitList.GetNewInstance; 
     mJunitList.JunitTypeId = Convert.ToInt32(xType["id"].InnerText); 
     mJunitList.JunitLabelId = Convert.ToInt32(xmlJunit["label"].InnerText); 
     mJunitList.Deck = xmlJunit["deck"].InnerText; 
     mJunitList.HasGalleryList = false; 
     mJunitList.IntroText = xmlJunit["intro"].InnerText; 
     if (string.IsNullOrEmpty(xmlJunit["status"].InnerText)) 
     { 
      mJunitList.JunitStatusId = (int)JunitStatus.New; 
     } 
     else 
     { 
      mJunitList.JunitStatusId = Convert.ToInt32(xmlJunit["status"].InnerText, CultureInfo.CurrentCulture); 
     } 
     mJunitList.JunitSlug = 
      CommonUtility.EncodeChar(xmlJunit["slug"].InnerText); 
     if(!string.IsNullOrEmpty(xmlJunit["byline"].InnerText)) 
     { 
      MInternalUser mInternalUser = MInternalUser.GetNewInstance; 
      mInternalUser.PublicationIds = xmlJunit["publication"].InnerText; 
      Collection<MInternalUser> objUsers = 
       BllInternalUser.GetActiveInternalUserByPublicationId(mInternalUser, GeneralMethods.IsServiceRequired()).InternalUsers; 
      var objByLine = new Collection<MByLine>(); 

      string[] juniByline = xmlJunit["byline"].InnerText.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); 
      for (int i = 0; i < juniByline.Length; i++) 
      { 
       MByLine mByLine = MByLine.GetNewInstance; 
       mByLine.Byline = juniByline[i]; 
       mByLine.UserId = objUsers.Where(n => n.ByLineName.ToLower().Equals(juniByline[i].ToLower())).First().InternalUserId; 
       objByLine.Add(mByLine); 
      } 
      mJunitList.Bylines = objByLine; 
     } 

     if(!string.IsNullOrEmpty(xInfo["infodate"].InnerText)) 
      mJunitList.InfoBoxDate = CommonUtility.EncodeChar(xInfo["infodate"].InnerText); 
     if(!string.IsNullOrEmpty(xInfo["infotime"].InnerText)) 
      mJunitList.InfoBoxTime = CommonUtility.EncodeChar(xInfo["infotime"].InnerText); 
     if(!string.IsNullOrEmpty(xInfo["infoloc"].InnerText)) 
      mJunitList.InfoBoxLocation = CommonUtility.EncodeChar(xInfo["infoloc"].InnerText); 
     if(!string.IsNullOrEmpty(xInfo["infotext"].InnerText)) 
      mJunitList.InfoBoxText = CommonUtility.EncodeChar(xInfo["infotext"].InnerText.Trim()); 

     #endregion 

     if (string.IsNullOrEmpty(xmlJunit["id"].InnerText)) 
     { 
      mJunitList.CapsuleId = int.Parse(xmlJunit["capid"].InnerText); 
      mJunitList.PublicationIds = xmlJunit["publication"].InnerText; 
      mJunitList.CreatedBy = Convert.ToInt32(xmlJunit["createdby"].InnerText); 
      if (!string.IsNullOrEmpty(xmlJunit["tags"].InnerText.Trim())) 
      { 
       mJunitList.Tags = xmlJunit["tags"].InnerText.Trim().Trim(','); 
      } 
      mJunitList = BllJunitList.UpdateJunitList(mJunitList, Statement.Insert, GeneralMethods.IsServiceRequired()); 

      if (mJunitList.JunitId > 0) 
      { 
    //   return mJunitList.JunitId.ToString(); 
      } 

      if (mJunitList.EffectedRows == (int)QueryStatus.Duplicate) 
      { 
       return string.Format("-1|Error duplicate record"); 
      } 
      else 
      { 
       return string.Format("-1|Error transaction failed"); 
      } 
     } 
     else 
     { 
      //if (imbSave.Visible) 
      //{ 
       mJunitList.JunitId = Convert.ToInt32(xmlJunit["id"].InnerText, CultureInfo.CurrentCulture); 
       mJunitList.PublicationIds = xmlJunit["publication"].InnerText; 
       mJunitList.UpdatedBy = Convert.ToInt32(xmlJunit["createdby"].InnerText); 
       #region Tag Information 

       //mJunitList.DeleteTags = DeleteJunitTags(); 
       //mJunitList.JunitTags = InsertJunitTags(); 
       if (!string.IsNullOrEmpty(xmlJunit["tags"].InnerText.Trim())) 
       { 
        mJunitList.Tags = xmlJunit["tags"].InnerText.Trim().Trim(','); 
       } 

       #endregion 

       int effectedRows = 
        BllJunitList.UpdateJunitList(mJunitList, Statement.Update, GeneralMethods.IsServiceRequired()).EffectedRows; 
       if (effectedRows == (int)QueryStatus.Success) 
       { 
        //       return mJunitList.JunitId.ToString(); 
       } 
       else 
       { 
        return string.Format("-1|Error transaction failed"); 
       } 
      //} 
     } 

     string path = Path.Combine(Server.MapPath(ApplicationConstants.CONTENTLIBRARY_VARIABLE), 
            xmlJunit["publication"].InnerText); 
     if (!Directory.Exists(path)) 
      Directory.CreateDirectory(path); 

     string fullpath = Path.Combine(path, mJunitList.JunitId.ToString()); 
     Directory.CreateDirectory(fullpath); 
     if (data.Length > 0) 
     { 
      string htmlfile = string.Format("{0}\\{1}.html", fullpath, DateTime.Now.ToString("MMddyyHHmmss")); 

      // var ajxFileUpload = htmlEditorExtender.AjaxFileUpload; 
      // ajxFileUpload.SaveAs(Server.MapPath(string.Format("{0}/{1}/{2}/{3}.html", ApplicationConstants.COMMONLIBRARY_VARIABLE, hdnPublicationId.Value, hdnJunitId.Value, DateTime.Now.ToString("MMddyy")))); 
      using (FileStream fS = new FileStream(htmlfile, FileMode.Create)) 
      { 
       using (StreamWriter fStrm = new StreamWriter(fS, Encoding.UTF8)) 
       { 
        fStrm.Write(HttpUtility.HtmlDecode(data)); 
        //fStrm.Write(htmlEditorTextBox.Text.Replace("&lt;", "<").Replace("&gt;", ">")); 
        fStrm.Close(); 
       } 
       fS.Close(); 
      } 
     } 
     var directory = new DirectoryInfo(path); 
     if (directory.GetFiles().Count() > 0) 
     { 
      var files = (from f in directory.GetFiles() 
         orderby f.LastWriteTime descending 
         select f).ToList(); 
      if (files != null) 
      { 
       for (int i = 0; i < files.Count(); i++) 
       { 
        files[i].MoveTo(string.Format("{0}\\{1}", fullpath, files[i].Name)); 
       } 
      } 
     } 
     return mJunitList.JunitId.ToString(); 
    } 
    catch (Exception eX) 
    { 
     return string.Format("-1|{0}", eX.Message); 
    } 
} 

Ajax调用总是返回200 OK,但函数从未被调用 在客户端调试器(chrome)捕获的请求数据之下

{"xjunit":"<?xml version=\"1.0\" encoding=\"utf-8\"?><junit><byline>Mohan</byline><id></id><capid>102</capid><status></status><slug> 17</slug><tags>tags</tags><publication>21</publication><type><id>17</id><name>Text</name></type><label>21</label><deck>deck1</deck><intro>intro</intro><info><infodate></infodate><infotime></infotime><infoloc>loc</infoloc><infotext>info</infotext></info><createdby>7</createdby></junit>","data":"<p>content</p>"} 

UPDATE

我已经改变

error: function(result) { 

error: function (jqXHR, textStatus, errorThrown) { 

了解错误。 textStatus是表示作为parsererror和在errorThrown是示出输入

+0

1.如果您正在使用安装在服务器上的VS,请检查端口号。可能是该端口正在被服务器中的某个其他用户使用。 2.使用这行'error:function(error){console.log(error);}'并在控制台中查看错误并将其粘贴到此处。 –

+0

谢谢Santhosh,我找到了问题。问题在于网址不正确。更改网址已解决问题。对于这个不好的网址的响应是200 OK,而不是404,这对于解决问题已经有一段时间了。 – Naga

回答

0

其实URL

MainPortal/VirtualRoomService.asmx 

未指向正确的位置。这是主要问题。将URL指向正确的位置已修复问题不确定为什么响应是200确定是否有错误的URL?希望这个答案能帮助一个有类似问题的人。

+0

似乎有趣的通过',这个我的答案帮助我找出其他类似的问题现在:( – Naga

0

变化这一行的意外结束:

data: JSON.stringify({xjunit: junit, data: editor.getData().trim()}),

到:

data: {xjunit: junit, data: editor.getData().trim()},

+0

这没有奏效。谢谢你 – Naga