2013-05-14 134 views
0

我有在HTML体“按钮帐户”名称的HTML按钮,并希望与阿贾克斯更新aspx页面当用户点击该按钮语法错误:JSON.parse:意外字符错误意外的标记<

我得到这个错误在谷歌C​​HROM

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。我知道这是我的错误。如何解决它?

任何帮助......并欣赏

+0

你能显示代码,其中'JSON.parse()来'叫的一部分吗? – M4N 2013-05-14 11:23:17

回答

-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响应。

使用fiddler,Chrome的开发者工具或类似的工具来检查确切的答案是什么,服务器返回。


在回答您的评论:

检查哪些返回的HTML页面的内容。这可能是由服务器端代码(例如未处理的异常)或服务器端配置导致的错误。

+0

喜,提琴手的结果是200,阿贾克斯成功 – Mohammadreza 2013-05-14 11:17:48

+0

运行@Edalat:但什么是响应的内容?它是预期的JSON还是HTML(错误)页面? – M4N 2013-05-14 11:19:05

+0

它返回HTML,unfourtunetly。 – Mohammadreza 2013-05-14 11:29:32

1

更改此

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

对此

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

你有一个额外的逗号,"password": pass,),所以它不能正确序列化。

编辑:

试试这个

[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

喜@Pawan Nogariya,谢谢,但它并没有正常工作。 – Mohammadreza 2013-05-14 11:19:08

+0

嗯,好的。你可以发布代码,然后使用'JSON.parse'? – 2013-05-14 11:26:12

+0

nogriya,是的,我合并我的服务器代码发布 – Mohammadreza 2013-05-14 11:35:39