Я запускаю автозаполнение jQuery на экране, который вызывает функцию для получения данных с другой страницы.aspx. Настройка работает нормально при запуске локально, но когда я ее размещаю, я получаю сообщение об ошибке, которое я установил для сообщения, когда оно не работает. Единственная проблема заключается в том, что я не могу понять, почему она будет работать локально, но не при размещении (кстати, на локальном хосте).
Страница 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;
}
}
}
}
Проверьте URL:/../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 будет печатать текст, связанный с кодом, например, страница не найдена, внутренняя ошибка сервера и т.д.
Проблема заключалась в объявлении в JQueryAutoComplete.aspx файла кода свойств, который необходимо изменить для кода.
Свойство codefile препятствует доступу к.cs и тому месту, откуда пришел 404.