问题:vs2003 .net1.1版本。jquery ajax提交到webservice时报“请求格式无效:application/json;charset=utf-8。”错误
代码:function UpdatePers(){
var j_wait_message_dialog = ShowWaitMessageDialog("保存数据...");
 $.ajax({
                   type: "POST",
                   url: "RecordWebService.asmx/UpdateRecordPers4",
                   // data:"{id:"+$('#ipt_id').val()+",content:"+$('#txt_nr').val()+"}",
   data:{id:'2'},
   dataType: 'json',
   contentType: "application/json;charset=utf-8",//有这条报“请求格式无效:application/json;charset=utf-8。”错误,注释掉就正常
                   success: function(data) {
var re=eval(data);
                        alert(re.result);
HideWaitMessageDialog(j_wait_message_dialog);
                    },
error: function(x, e) {  
                    alert(x.responseText); 
HideWaitMessageDialog(j_wait_message_dialog);
                }
                });
}后台:[WebMethod]
public string UpdateRecordPers4(string id)
{
Context.Response.Write( "{\"result\":\""+id+"ok\"}");//这条返回纯json格式数据
//return( "{\"result\":\""+id+"ok\"}");//这条返回的json数据外围包含了xml格式

}
个人疑惑:
 1: contentType: "application/json;charset=utf-8",//有这条报“请求格式无效:application/json;charset=utf-8。”错误,注释掉就正常
2:关于webservice返回json语句
Context.Response.Write( "{\"result\":\""+id+"ok\"}");//这条返回纯json格式数据
//return( "{\"result\":\""+id+"ok\"}");//这条返回的json数据外围包含了xml格式,我设置了contentType: "application/json;charset=utf-8",为什么会加xml格式呢?

解决方案 »

  1.   

    本帖最后由 net_lover 于 2012-07-31 11:54:53 编辑
      

  2.   

    jquery 版本:jquery-1.7.1.min.js
    按您提示修改后:
    return "{\"result\":\""+id+"ok\"}"; data:{"id":"2"},
    依然提示:请求格式无效:application/json; charset=UTF-8
    如果我将此句"contentType: "application/json;charset=utf-8","注释掉,http Analyzer抓包发现系统会以“Content-Type:application/x-www-form-urlencoded”进行提交,这样返回就能正常。
    百思不得其解
      

  3.   

    本帖最后由 net_lover 于 2012-07-31 12:03:21 编辑
      

  4.   

    有可能,公司的框架是vs2003 .net1.1,所以不方便改,既然如此就暂时这样用吧,谢谢net_lover。