Метод Ajax Call WebPage не работает - PullRequest
5 голосов
/ 02 февраля 2011

Я делаю

<script type="text/javascript"  src="Scripts/jquery-1.4.1.min.js"></script>

<script type="text/javascript">
    function CallPageMethod(methodName, onSuccess, onFail) {
        var args = '';
        var l = arguments.length;
        if (l > 3) {
            for (var i = 3; i < l - 1; i += 2) {
                if (args.length != 0) args += ',';
                args += '"' + arguments[i] + '":"' + arguments[i + 1] + '"';
            }
        }
        var loc = window.location.href;
        loc = (loc.substr(loc.length - 1, 1) == "/") ? loc + "Report.aspx" : loc;
        $.ajax({
            type: "POST",
            url: loc + "/" + methodName,
            data: "{" + args + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: onSuccess,
            fail: onFail
        });
    }

    function success(response) {
        alert(response.d);
    }

    function fail(response) {
        alert("&#1054;&#1096;&#1080;&#1073;&#1082;&#1072;.");
    }

    function select() {

        ...........

        CallPageMethod("SelectBook", success, fail, ...........);
    }
</script>

А мой диспетчер скриптов

<asp:ScriptManager ID="ScriptManager1" 
EnableScriptGlobalization="true" 
EnableScriptLocalization="true"
EnablePageMethods="true" 
EnablePartialRendering="true" runat="server" />

Но когда я выполняю функцию выбора, я ничего не получаю ... вообще никаких сообщений.

Журнал ошибок:

    [ArgumentException]: Unknown web method SelectBook.
Parameter name: methodName
   at System.Web.Script.Services.WebServiceData.GetMethodData(String methodName)
   at System.Web.Handlers.ScriptModule.OnPostAcquireRequestState(Object sender, EventArgs eventArgs)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

И мой веб-метод:

<WebMethod()> Public Function SelectBook(ByVal values As String, ByVal valuesG As String, ByVal valuesX As String, ByVal valuesXG As String) As String
    '....
    Return If(((vals.Length = valsG.Length) And (valsX.Length = valsXG.Length)), SQLModule.UpdateAdvCode(vals, valsG, valsX, valsXG), "Ошибка чтения диспетчерских кодов")
End Function

Если я только делаю оповещение (CallPageMethod («Выбрать книгу», успех, сбой, ...........)), я вижу «неопределенный», но что неопределенный ??? Я пытался отладить этот JavaScript, но не могу это исправить. Это сработало, и я понимаю, как оно должно работать, но я просто не знаю, почему оно сломано и как это исправить. Помогите мне с этим, пожалуйста.

Дополнительная информация

    Server  ASP.NET Development Server/10.0.0.0
Date    Thu, 03 Feb 2011 11:30:51 GMT
X-AspNet-Version    4.0.30319
Cache-Control   private
Content-Type    text/html; charset=utf-8
Content-Length  3517
Connection  Close

почему закрыли?

Ответы [ 3 ]

3 голосов
/ 02 февраля 2011

Вы проверили файл конфигурации, зарегистрирован ли модуль

<httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
3 голосов
/ 04 февраля 2011

Проблема решена ....

<WebMethod()> Public SHARED Function SelectBook(ByVal values As String, ByVal valuesG As String, ByVal valuesX As String, ByVal valuesXG As String) As String
    '....
    Return If(((vals.Length = valsG.Length) And (valsX.Length = valsXG.Length)), SQLModule.UpdateAdvCode(vals, valsG, valsX, valsXG), "Ошибка чтения диспетчерских кодов")
End Function

Я провожу 2 дня, чтобы увидеть, что она должна быть общей> _ <</p>

0 голосов
/ 02 февраля 2011

У меня та же проблема с $ .ajax, не знаю почему, но теперь я использую $ .get () или $ .getJSON () для моих запросов XMLHTTP.кажется даже быстрее, чем с функцией $ .ajax ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...