2013-05-14 2 views
0

У меня есть кнопка HTML с «кнопки-счета» имя в HTML тела и хотите обновить ASPX страницу с AJAX, когда пользователь нажимает на кнопкуSyntaxError: JSON.parse: непредвиденная ошибка характер неожиданный маркер <

Я получаю эту ошибку в Google Chrom

SyntaxError: JSON.parse: unexpected character

и это в огне лисицы

SyntaxError: JSON.parse: unexpected character

Вот мой код

<script type="text/javascript" > 
    $(document).ready(function() { 

     $("#button-account").bind("click", "accountRegister"); 

     function accountRegister() { 
      var waitObj = "<span class='wait' > <img src='Resource/Images/loading.gif' alt='' /> </span>"; 
      var user = $("[name='username']").val(); 
      var pass = $("[name='password']").val(); 
      var dataObj = { 
       "username": user, 
       "password": pass, 
      }; 
      $.ajax({ 
       type: "POST", 
       url: "Checkout.aspx/login", 
       data: dataObj, 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       beforSend: function() { 
        $(this).attr("disabled", "true"); 
        $(this).after(waitObj); 
       }, 
       success: function (msg) { 
        // Replace the div's content with the page method's return. 
        alert("success"); 
        $("#checkout").slideUp("slow"); 
        $("#payment-address").slideDown("slow"); 
       }, 
       error: function (msg) { 
        alert("error"); 
       }, 
       complete: function() { 
        $(this).attr("disabled", "false"); 
        $(".wait").remove(); 
       }, 
      }); 
     } 


    }); 





</script> 

и вот мой WebMethod

[WebMethod] 
    public static string login() 
    { 
     //bool UserIsValid = false; 
     //string userName = ""; 
     //string pass = ""; 
     //MembershipUser u = Membership.GetUser(userName); 
     //pass = u.GetPassword(); 
     //if (UserIsValid) 
     //{ 
     // // returnAsHtml = "true"; 

     //} 
     //else 
     //{ 
     // //returnAsHtml = "use is not valid"; 

     //} 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     string result = js.Serialize("{ a:'1' }"); 
     return result; 

    } 

и скрипача возврат 200 статус. но верните html. Я знаю, что это моя ошибка. как решить его?

любая помощь appriciate ...

+0

Не могли бы вы показать часть кода, где '' JSON.parse называется()? – M4N

ответ

-1

очень жаль !!!

в другом разделе называется этот

$('#button-login').live('click', function() { 
    $.ajax({ 
     url: 'Checkout.aspx?login', 
     type: 'post', 
     data: $('#checkout #login :input'), 
     dataType: 'json', 
     beforeSend: function() { 
      $('#button-login').attr('disabled', true); 
      $('#button-login').after('<span class="wait">&nbsp;<img src="Resource/Images/loading.gif" alt="" /></span>'); 
     }, 
     complete: function() { 
      $('#button-login').attr('disabled', false); 
      $('.wait').remove(); 
     }, 
     success: function (json) { 
      $('.warning, .error').remove(); 

      if (json['redirect']) { 
       location = json['redirect']; 
      } else if (json['error']) { 
       $('#checkout .checkout-content').prepend('<div class="warning" style="display: none;">' + json['error']['warning'] + '</div>'); 

       $('.warning').fadeIn('slow'); 
      } 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); 
     } 
    }); 
}); 
2

Сервер вероятно возвращает ошибку страницы (например, "<html> ...") вместо ответа JSON вы ожидали.

Используйте инструменты разработчика или инструменты для поиска хром, чтобы проверить, что такое точный ответ, что сервер возвращается.


В ответ на Ваши комментарии:

Проверьте, что содержание возвращаемой HTML странице. Вероятно, это ошибка, вызванная вашим серверным кодом (например, необработанным исключением) или конфигурацией на стороне сервера.

+0

привет, результат скрипача 200, ajax успешно завершен – Mohammadreza

+0

@ Эдалат: но каково содержание ответа? Это ожидаемый JSON или это HTML-страница (ошибка)? – M4N

+0

он возвращает html, unourtunetly. – Mohammadreza

1

Изменить этот

var dataObj = { 
       "username": user, 
       "password": pass, 
      }; 

Для этого

var dataObj = { 
       "username": user, 
       "password": pass 
      }; 

У вас есть лишняя запятая , ("password": pass,) после прохода, так что это не может сериализовать его должным образом.

Edit:

Попробуйте

[WebMethod] 
    public static string login() 
    { 
     //bool UserIsValid = false; 
     //string userName = ""; 
     //string pass = ""; 
     //MembershipUser u = Membership.GetUser(userName); 
     //pass = u.GetPassword(); 
     //if (UserIsValid) 
     //{ 
     // // returnAsHtml = "true"; 

     //} 
     //else 
     //{ 
     // //returnAsHtml = "use is not valid"; 

     //} 

     //JavaScriptSerializer js = new JavaScriptSerializer(); 
     //string result = js.Serialize("{ a:'1' }"); // no need to serialize 
     return "{ a:'1' }"; 

    } 
+0

привет @ Паван Ногария, спасибо, но он пока не работает. – Mohammadreza

+0

Хм, хорошо. Можете ли вы опубликовать код, который использует 'JSON.parse'? –

+0

nogriya, да, я объединил свой серверный код для публикации – Mohammadreza

Смежные вопросы