2013-05-14 139 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