2014-03-07 54 views
0

asmx頁面我調用一個web服務,它返回一個JSON字符串,但我的jQuery文章失敗了,我不知道爲什麼?爲什麼Web服務無法返回正確的JSON?

    $.post("/DesktopModules/EastlinkMilestones/MilestonesService.asmx /InsertYear_Decade", 
       { Year: $('#txtYear_Decade').val(), 
        IsDecade: $('#chkIsDecade').prop('checked') 
       }, 
       function (data) 
       { 
        Current_Edit_State == EDIT_STATE.UPDATE; 
        successMessage.text('Year/Decade created successfully.'); 
        informationMessage.css('display', 'none'); 
        successMessage.css('display', 'block');       
       }, 
       "json" 
       ) 
       .done(function(data) { 
        alert("second success"); 
        alert(JSON.stringify(data)); 
        }) 
       .fail(function(jqXHR, textStatus, errorThrown) {      
        alert("error"); 
        alert(JSON.stringify(jqXHR)); 
        alert(textStatus); 
        alert(errorThrown); 
        }) 
       .always(function() { 
        alert("finished"); 
       }); 

.ASMX方法

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string InsertYear_Decade() 
    { var Request = HttpContext.Current.Request; 
     var Response = HttpContext.Current.Response; 

        var js = new JavaScriptSerializer(); 

       string mileStoneData = js.Serialize(data); 

       return mileStoneData; // {"ID": 20, "Year": "2013", "IsDecade": false } 
      } 
    } 

Web方法總是失敗,這是textStatus = parsererror和errorThrown =無效字符?

+0

JSON文本實際上是什麼樣子? – MonkeyZeus

+0

這可能很有用:http://stackoverflow.com/a/21617685/2191572 – MonkeyZeus

+0

JSON文本在返回語句後註釋 – Hunter

回答

1

你不需要返回值,只需要在響應中。嘗試是這樣的:

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
Response.ContentType = "application/json"; 
Response.Write(serializer.Serialize(data)); 
+1

這工作就像一個魅力!謝謝。 – Hunter

+1

不客氣@獵人我很樂意幫助! – frikinside

-1

返回一個類型相反的,你應該直接返回的對象。無需使用JavascriptSerializer,並在您的jQuery文章中將您的contentType設置爲application/json

相關問題