Вызовите WebMethod из JQuery с параметром в C # - PullRequest
0 голосов
/ 28 августа 2018

У меня есть следующая гиперссылка HTML, которую я хочу назвать в jQuery, когда она нажала

<a href="#" data-toggle="dropdown" id="notID" class="dropdown-toggle f-s-14">
                <i class="fa fa-bell"></i>
                <span runat="server" id="notCount" class="label">5</span>
            </a>

Когда я нажимаю гиперссылку, выполняется следующий код

<script src="assets/plugins/jquery/jquery-1.9.1.js"></script>
<script>
    $(document).ready(function () {
        $("#notID").click(function () {

            var uID = '<%=Session["userID"].ToString() %>'

            $.ajax({
                url: 'TaskService.asmx/updateNotRead',
                data: '{userID: "' + uID + '"}',
                type: 'POST',
                contentType: 'application/json',
                dataType: 'json'
            });
            return false;
        });
    });
</script>

И в файле веб-сервиса я написал следующий код C #, в котором есть определение для веб-метода, который я вызываю из jQuery выше.

[WebMethod]
    public void updateNotRead(string userID)
    {
        u.updateNotReadStatus(userID);
    }

Когда я звонил в веб-сервис, я получил следующее сообщение в браузере

System.InvalidOperationException: Missing parameter: userID.
   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()

Так как я могу дать веб-методу параметр userID?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018
data: '{userID: "' + uID + '"}',

Должно быть:

data: "{userID : '" + uID + "'}",
0 голосов
/ 17 сентября 2018

Попробуй так:

var uID = '<%=Session["userID"].ToString() %>';
$.ajax({
    url: 'TaskService.asmx/updateNotRead',
    data: "{userID : '" + uID + "'}",
    type: 'POST',
    contentType: 'application/json',
    dataType: 'json'
});
0 голосов
/ 28 августа 2018

Я думаю, что ваша проблема связана с параметром данных.

data:{userID:uID},

вместо

data: '{userID: "' + uID + '"}',

Я бы использовал объект para, чтобы содержать параметр, который может упростить код.

var uID = '<%=Session["userID"].ToString() %>';
var para = {userID:uID};
$.ajax({
    url: 'TaskService.asmx/updateNotRead',
    data: para,
    type: 'POST',
    contentType: 'application/json',
    dataType: 'json'
});
...