jQuery AJAX + ASMX-开发人员出现内部服务器错误,但本地错误

时间:2018-07-25 18:56:44

标签: jquery ajax asmx

我有一个页面,该页面在加载时调用callMethod jquery函数。此函数在ASMX页面上调用方法以从数据库获取一些数据。成功时,它将调用另一个jQuery函数。如果出错,它只会发出xhr.rsponseText警报。

在Localhost上,这可以正常工作。没有问题。但是,一旦发布到Dev,就会收到500 /内部服务器错误,并且由于我对AJAX不太熟悉,所以我不确定自己缺少什么。

我认为这不是数据库连接问题。我认为AJAX /参数/传递的任何内容都存在问题,无法正确解析?

任何帮助将不胜感激!先感谢您。 :)

jQuery

    $(function () {
        callMethod("GetColumnsList", "setFieldList");
    });

    function callMethod(methodName, returnFunctionName, argData) {
    $.ajax({
        url: getUrl(methodName),
        dataType: 'json',
        type: 'POST',
        contentType: 'application/json; charset=UTF-8',
        success: function (data) {
            if (returnFunctionName) {
                if (argData)
                    window[returnFunctionName](data, argData);
                else
                    window[returnFunctionName](data);
            }
        },
        error: function (xhr, ajaxOptions, error) {
            console.log("Failed the ajax operation.");
            console.log(xhr.status);
            console.log(error);
            alert(xhr.responseText);
        }
    });

ASMX

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetColumnsList()
{
    var db = new MySqlConnectionStringEntities();
    var records = (from c in db.Fields
                   where c.IsDeleted == false
                   orderby c.Id
                   select new
                   {
                       c.Name,
                       c.Description
                   }).ToList();
    var resultStr = JsonConvert.SerializeObject(Classes.FieldNameMap.GetAllFields(), Formatting.None, new JsonSerializerSettings()
    {
        ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
    });
    return resultStr;
}

1 个答案:

答案 0 :(得分:0)

原来的问题是Ajax找不到Web服务文件。

我有说明的代码:

function getUrl(name) {
    return "../../WebServices/Associates/Request.asmx/" + name;
}

我必须将返回路径更改为“ ../WebServices/Associates/Request.asmx/”,以使其正常工作。先前的路径在本地有效,但在dev上无效,这可能是由于dev上项目的文件夹结构发生了变化?无论如何,都固定了。感谢您的帮助!