Вызов asp.net метод страницы из javascript не работает в Firefox

#javascript #asp.net #json #jquery #pagemethods

#javascript #asp.net #json #jquery #pagemethods

Вопрос:

Я использую PageMethod с javascript для вызова кода на стороне сервера:

  function getMonths() {

   PageMethods.BindMonthlyPeriods(getMonthsSuccess, onFailure);            }
 }

 function getMonthsSuccess(result, userContext, methodName) {

    var picker = document.getElementById("monthPicker");

    for (var i = 0; i < result.length; i  ) {

        var newOption = document.createElement('option');
        newOption.text = result[i];
        newOption.value = result[i];

        picker.add(newOption); 
    }
}
  

С этим в коде-за:

     [WebMethod]
    public static string[] BindMonthlyPeriods()
    {

    }
  

Это отлично работает в IE / Chrome, но не в firefox. Сообщение об ошибке отсутствует данные просто не заполняются в Firefox.

Я также пытался использовать вместо этого вызов jQuery ajax, но это не работает, хотя я не уверен, что сделал это правильно:

  function getMonths() {

    $.ajax({
        type: "POST",
        url: "page.aspx/BindMonthlyPeriods",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {

            var picker = document.getElementById("monthPicker");

            for (var i = 0; i < msg.length; i  ) {

                var newOption = document.createElement('option');
                newOption.text = result[i];
                newOption.value = result[i];

                picker.add(newOption);
            }

        }
    });
  

Редактировать

Используя Firebug, я не нашел сообщений об ошибках на вкладке Net, но обнаружил эту ошибку на вкладке консоли:

неперехваченное исключение: [Исключение… «Недостаточно аргументов» nsresult: «0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)» расположение: «JS frame ::http://xxxxx.xxxxxxx.com/…/page.aspx :: getMonthsSuccess :: строка 251″ данные: нет]

Комментарии:

1. @Sean, ты можешь использовать firebug и проверить, в чем проблема, он четко показывает ошибку в ajax

2. Вызов jQuery ajax также не работает в IE. Я думаю, что id скорее использует подход jquery, чем подход PageMethod. Я проверю firebug.

3. @sean , используй firebug для отладки, мы можем легко найти проблему, см. resonse на вкладке net.

4. @sean требует ли ваш метод каких-либо аргументов, если да, то он не работает там

5. Метод не имеет никаких параметров, просто возвращает строку[].

Ответ №1:

Решил это, добавив параметр null в метод ‘add’ monthpicker:

picker.add(newOption, null);

Ответ №2:

 < asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click"
                OnClientClick="return saveChanges()" />   **Script:**  var isPostBack=false; function saveChanges() { if(!isPostBack){
         PageMethods.savePageChanges(tableData, updateContent_OnSucceeded,      updateContent_onFailure);
  return false;
  }else{ 
     return true;}
   }




    function updateContent_OnSucceeded(retval) {
       isPostBack=true;
      $('# <%=btnSave.ClientID%>).click();
    }

    function updateContent_onFailure(val) {
        alert("Error: "   val.get_message());

    }**CS:**[System.Web.Services.WebMethod]
public static bool savePageChanges(List<List<string>> rowDataArraySeries)
{}