我在屏幕上运行jQuery自动完成,该屏幕调用该函数从另一个.aspx页面获取数据。设置在本地运行时工作正常,但是当我托管它时,我发生错误,这是我设置的消息,当它不起作用时。唯一的问题是我无法弄清楚为什么它会在本地工作但不能在托管时(顺便提一下在localhost上)。
带有自动填充框的ASPX页面:
$(document).ready(function () {
document.getElementById('<%=txtCustomerType.ClientID %>').onclick = SearchText();
});
function SearchText() {
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/../JQueryAutoComplete.aspx/GetAutoCompleteData",
data: "{'Customer':'" + document.getElementById(
'<%=txtCustomerType.ClientID %>').value + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert('An error occurred!');
}
});
}
});
$(".autosuggest").autocomplete({
select: function (a, b) {
checkDirty = false;
$(this).val(b.item.value);
$("form").submit()
}
});
它调用的Jquery页面后面的代码:
public partial class _Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
[WebMethod]
public static List<string> GetAutoCompleteData(string Customer) {
List<string> result = new List<string>();
SqlConnection dbConnection = new SqlConnection(GetConnection.GetConnectionString());
using (SqlConnection con = dbConnection) {
DataSet ds = new DataSet();
using (SqlCommand cmd = new SqlCommand(
"PL_CustomerTypes_IntelliSearch", dbConnection)) {
cmd.Parameters.Add("@SearchText", SqlDbType.NVarChar).Value = Customer;
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
DataTable dtResults = new DataTable();
dtResults = ds.Tables[0];
foreach (DataRow R in dtResults.Rows) {
string strResult = (string)R.ItemArray[0];
result.Add(strResult);
}
//while (dr.Read()) {
// string Name = (dr["ACNT_NAME"].ToString().Trim());
// result.Add(Name);
//}
return result;
}
}
}
}
答案 0 :(得分:1)
检查网址:/../JQueryAutoComplete.aspx/GetAutoCompleteData。重写它而不诉诸“../".
另外,为了确保您可以从错误函数中获取更多信息(请参阅http://api.jquery.com/jQuery.ajax/),其签名是 函数(jQxhr,textStatus,errorThrown)[而不是函数(结果)],使用它作为错误处理程序,以便检查它是否因404或其他原因而失败:
function(xhr){
alert(xhr.status + " - " + xhr.statusText);
}
xhr.status将打印http状态代码,例如404,500等 xhr.statusText将打印与代码关联的文本,例如Page not Found,Internal Server Error等
答案 1 :(得分:0)
问题在于JQueryAutoComplete.aspx中的声明需要将属性代码文件更改为代码隐藏。
codefile属性阻止它访问.cs以及404来自的位置。