jQuery Ajax调用总是返回错误 [英] Jquery Ajax Call always returns error

查看:132
本文介绍了jQuery Ajax调用总是返回错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个如下的javascript代码

I have a javascript code as below

                var xReg = '<region><width>' + $("#txtWidth").val() + '</width>  <height>' + $("#txtHeight").val() + '</height><float>' + $("#floats").val() + '</float><contenttype>' + $("#contenttype").val() + '</contenttype><style>' + rgnStyle + '</style></region>';
                $.ajax({
                    type: "POST",
                    url: "myurl/addRegion",
                    data: "{pubId: '" + Number($("#pubs").val()) + "',section: '" + $("#sections option:selected").text() + "',layoutW: '" + Number($("#txtLayoutW").val()) + "',layoutH: '" + Number($("#txtLayoutH").val()) + "',bSubReg: '" + Boolean($("#chkSubRegion").is(':checked')) + "',parentRegId: '" + Number(parentRgn) + "',sXmlRegion: '" + xReg.toString() + "'}",
                    contentType: "application/json; charset=utf-8",
                    async: false,
                    dataType: "json",
                    success: function (result) {
                        document.body.style.cursor = 'pointer';
                        if (result.d == -1) {
                            $("#errMsg").text("Failed to create new region");
                        }
                        else {
                            if ($("#chkSubRegion").is(':checked')) {
                                $("#regions").append("<option class='ddindent' value='" + result.d + "'>REGION-" + result.d.toString() + "</option>");
                            } else {
                                $("#subregions").append("<option class='ddindent' value='" + result.d + "'>SUBREGION-" + result.d.toString() + "</option>");
                            }
                        }
                    },
                    error: function (result) {
                        if (result.status == 200 && result.statusText == 'OK') {
                            if ($("#chkSubRegion").is(':checked')) {
                                $("#regions").append("<option class='ddindent' value='" + result.d + "'>REGION-" + result.d.toString() + "</option>");
                            } else {
                                $("#subregions").append("<option class='ddindent' value='" + result.d + "'>SUBREGION-" + result.d.toString() + "</option>");
                            }
                        }
                        else {
                            alert("FAILED : " + result.status + ' ' + result.statusText);
                        }
                    },
                    async: true
                });

服务器代码如下

[WebMethod]
public int addRegion(int pubId, string section, int layoutW, int layoutH, bool bSubReg, int parentRegId, string sXmlRegion)
{
    string path = Server.MapPath("~");
    path = Path.Combine(path, "Published");
    path = Path.Combine(path, pubId.ToString());
    path = Path.Combine(path, section);
    XmlDocument doc = new XmlDocument();
    int rgnCount = 0;
    try
    {
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        path = Path.Combine(path, "layout.xml");
        if (!File.Exists(path))
        {
            XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
            doc.AppendChild(docNode);
            XmlNode templateNode = doc.CreateElement("layout");
            doc.AppendChild(templateNode);
            XmlNode xNodeW = doc.CreateElement("width");
            xNodeW.AppendChild(doc.CreateTextNode(layoutW.ToString()));
            XmlNode xNodeH = doc.CreateElement("height");
            xNodeH.AppendChild(doc.CreateTextNode(layoutH.ToString()));
        }
        else
        {
            doc.Load(path);
            doc.DocumentElement.SelectSingleNode("/layout/width").InnerText = layoutW.ToString();
            doc.DocumentElement.SelectSingleNode("/layout/height").InnerText = layoutH.ToString();
        }
        XmlElement root = doc.DocumentElement;
        XmlNode xParent = root;
        if (bSubReg)
        {
            xParent = root.SelectSingleNode("/layout/region[id='" + parentRegId.ToString() + "']");
            rgnCount = xParent.SelectNodes("/region").Count;
        }
        else
        {
            rgnCount = root.SelectNodes("/Layout/region").Count;
        }

        rgnCount++;

        XmlDocumentFragment docFragment = doc.CreateDocumentFragment();
        docFragment.InnerXml = sXmlRegion;
        XmlNode xID = doc.CreateElement("id");
        xID.AppendChild(doc.CreateTextNode(rgnCount.ToString()));
        docFragment.FirstChild.AppendChild(xID);
        xParent.AppendChild(docFragment);


        doc.Save(path);
        return rgnCount;
    }
    catch (Exception eX)
    {
        return -1;
    }
}

该呼叫将从客户端转到服务器.在调试时,直到最后一个return语句,我都无法在服务器代码中找到任何问题.在javascript调试中,我发现ajax调用之后始终会返回错误回调函数.谁能建议代码有什么问题.

感谢&感谢您的时间.

Thanks & Appreciate Your Time.

推荐答案

我发现代码中的错误存在以下代码行

I found the bug in my code there is issue with below lines of code

            },
            async: true

错误结束时:回调函数

我删除了async行:true,它起作用了

I removed the line async: true and it worked

这篇关于jQuery Ajax调用总是返回错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆