我有一个页面,该页面在加载时调用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;
}
答案 0 :(得分:0)
原来的问题是Ajax找不到Web服务文件。
我有说明的代码:
function getUrl(name) {
return "../../WebServices/Associates/Request.asmx/" + name;
}
我必须将返回路径更改为“ ../WebServices/Associates/Request.asmx/”,以使其正常工作。先前的路径在本地有效,但在dev上无效,这可能是由于dev上项目的文件夹结构发生了变化?无论如何,都固定了。感谢您的帮助!