为什么Web服务不能正确返回字符串?

时间:2018-07-13 20:11:58

标签: javascript asp.net ajax web-services asmx

我有ajax函数,可以将一些字符串发送到Web服务。

这里是ajax:

    var data = "wkt=" + wkt;
    $.ajax({
        url: "....some path",
        type: "POST",
        data: data, 
        crossDomain: true,
        dataType: "text",
        success: function (response) {
            alert(response);
        },
        error: function () {
            console.log('Request Failed.');
        }
    });

这是Web服务:

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class ValveService : System.Web.Services.WebService
    {
        [WebMethod]
        public string ExecuteQuery(string wkt)
        {
                 return "dummy!";
        }
    }

作为响应,我得到以下字符串:

    "<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">dummy!</string>"

虽然我希望得到“假人!”的答复。

有人知道为什么我得到这个奇怪的响应以及如何仅获取从服务发送的字符串(在我的情况下为“ dummy!”)吗?

2 个答案:

答案 0 :(得分:0)

我很确定Web服务仅返回xml或json。可能有办法解决,在服务中设置响应类型,但我不确定。 [编辑:我看到Nerdi.org已经暗示了这一点。]

dataType: 'text'时,响应标头不仅是文本,而且是Content-Type: text/xml; charset=utf-8,并且您得到xml。

使用json(这是一个字符串)并使用它。

//var data = "wkt=" + wkt;
$.ajax({
    url: "/path to/ExecuteQuery",
    type: "POST",
    data: JSON.stringify({ wkt: wkt }),
    contentType: "application/json; charset=utf-8", // this will be the response header.
    crossDomain: true,
    dataType: "json",
    success: function(response) {
        // response is a wrapper. your data/string will be a value of 'd'.
        alert(response.d);
    },
    error: function() {
        console.log('Request Failed.');
    }
});

答案 1 :(得分:0)

替代方法:

[WebMethod]
public void ExecuteQuery(string wkt)
{
    Context.Response.Output.Write("dummy " + wkt);
    Context.Response.End();
}