简体   繁体   English

ASP.NET Web服务返回xml而不是json

[英]ASP.NET web service returning xml instead of json

here is my code; 这是我的代码;

$(document).ready(function () {
    $('#btnAddCat').click(function () {
        var cn = $('#txtCategoryName').val();
        alert(cn);
        $.ajax({
            type: 'Post',
            url: "../_ws/news.asmx/InsertCategory",
            data: { catName: + cn  },
            contenttype: 'application/json; charset=utf-8',
            datatype: 'json',
            async: false,
            success: function (msg) {
                alert(msg);
            },
            error: function (msg) {
                alert('failure');
                alert(msg);
            }
        });
    });
});

and here is the code in news.asmx web service 这是news.asmx web服务中的代码

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
'<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class News
    Inherits System.Web.Services.WebService


    <WebMethod()> _
    <ScriptMethod(ResponseFormat:=ResponseFormat.Json)>
    Public Function InsertCategory(ByVal catName As String) As String
        Dim newid = KTOEOS.NewsCategories.InsertCategory(catName)
        Return "{'c':" & newid & "}".ToString
    End Function

End Class

the returning result is: 返回的结果是:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">{'c':21}</string>

If I change the jQuery part to read; 如果我改变jQuery部分来阅读;

... ...

data: { catName: + cn  },

... ...

then I get an error: 然后我收到一个错误:

System.InvalidOperationException: Missing parameter: catName

What am I doing wrong? 我究竟做错了什么?

Probably it's because you are used to VB being case-insensitive. 可能是因为你习惯于VB不区分大小写。

Try these lines (note the capitol T): 尝试这些线(注意国会大厦T):

 contentType: 'application/json; charset=utf-8',
 dataType: 'json',

Uncomment the below line form your web service code. 从您的Web服务代码中取消注释以下行。

<System.Web.Script.Services.ScriptService()>

Why are you setting async to false ? 为什么要将async设置为false This will stop the browser completely until server responds. 这将完全停止浏览器,直到服务器响应。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM