2014-03-07 60 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

相关问题