При вызове веб-службы через jquery я получаю эту ошибку . Любая идея
вот ошибка, которую я получаю
System.InvalidOperationException: Missing parameter: MyParameterName. at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection) at System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request) at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
<pre> [WebService(Namespace="http://microsoft.com/webservices/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { [WebMethod] [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] public List<string> MethodName(string parameterName) { List<string> result = new List<string>(); using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("connectionstring")) { using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("mydbasequery, con)) { con.Open(); cmd.Parameters.AddWithValue("@xxx", parameterName); System.Data.SqlClient.SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { result.Add(dr["column_name"].ToString()); } return result.ToList(); } } } else { result.Add("sample"); return result.ToList(); } }
<pre lang="Javascript"> <pre> <script type="text/javascript"> $(document).ready(function () { functionName(); }); function functionName() { $('.classname').autocomplete({ source: function (request, response) { $.ajax({ async: true, type: "POST", contentType: "application/json; charset=utf-8", data: "{'service_parameter' :'" + $('.classname').val() + "'}", url: 'WebService1.asmx/MethodName', dataType: "json", crossDomain: true, success: function (data) { if (data != null) { response(data.d); } else { response("rule"); } }, error: function (error) { response("rule"); } }); }, minLength: 10, }); } </script>
Что я уже пробовал:
Я попробовал этот код и все еще получаю эту ошибку снова и снова..
Richard Deeming
Вызывается параметр вашего метода parameterName
, но имя, которое вы передаете из Javascript, - это service_parameter
.
Является ли это просто несоответствием, введенным при анонимизации вашего кода, или имена не совпадают в вашем реальном коде?
Richard Deeming
Кроме того, вы создаете строку JSON вручную, которая не будет работать, если пользователь введет одну кавычку в текстовое поле. Вам лучше использовать встроенный объект JSON:
data: JSON.stringify({ 'parameterName': $('.classname').val() })В формате JSON.преобразовать в строки() - JavaScript-кода | МДН[^]
jessrubio
спасибо за ваш комментарий, Я пытаюсь изменить свое решение, но ошибка все та же.
ZurdoDev
А потом ты сделал что-то не так. Вам нужно его отладить. Мы не можем управлять им для вас. Ричард прав, вам нужно соответствовать имени параметра.
jessrubio
Я уже исправил parameterName и service_parameter. они оба такие же, как parameterName, я запускаю свой код, и он работает именно так, как я хочу, текст теперь автозаполняется на основе моего ввода символов, но как только он проверит его с помощью google chrome Iand на моей вкладке newtwork, у меня есть эта ошибка.. "Система.InvalidOperationException: отсутствует параметр: parameterName", есть ли что-то с моей сетью. или это мое имя параметра?