“String”类型的值无法转换为“1维数组String”webservice调用

时间:2015-10-23 17:16:34

标签: arrays vb.net web-services arraylist

嘿,我得到的错误是:

  

'String'类型的值不能转换为'1维数组字符串'。

在我的代码的这一行:

Dim blah As String = webService.theQ(qString:="SELECT blah FROM table WHERE blah = 'hello'")

我的网络服务 sqlQ 功能代码是:

<WebMethod(CacheDuration:=60)> _
<ScriptMethod(UseHttpGet:=False, ResponseFormat:=ResponseFormat.Json, XmlSerializeString:=False)> _
Public Function theQ(ByVal qString As List(Of String)) As String
    Dim results As Object = fetchSQLQ("query", qString(0))
    ...etc etc
    Dim ser As New System.Web.Script.Serialization.JavaScriptSerializer()
    Dim strResponse As String = ser.Serialize(results)

    return strResponse
End Function

我不确定如何将其格式化为调用它?

这就是我如何使用AJAX调用它(它工作正常):

var sqlCC = "SELECT blah FROM table WHERE blah = 'hello'";

$.ajax({
    type : "POST",
    crossDomain : true,
    dataType : 'json',
    cache : false,
    contentType : "application/json",
    url : "/Service1.asmx/theQ",
    data : JSON.stringify({
        qString : [sqlCC]
    }),
    success : function (data2) {
        var obj2 = jQuery.parseJSON(data2);
    },
    error : function (xhr, status, error) {
        console.log(xhr.responseText);
    }
});

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

您的问题是参数,您将传递给您的网络服务。你通过了

webService.theQ(qString:="SELECT blah FROM table WHERE blah = 'hello'")

将字符串分配给qString的位置。但在你的宣言中

Public Sub theQ(ByVal qString As List(Of String))

qString被声明为字符串列表。

此外,您的网络方法是SUB,它没有任何返回值,因此

Dim blah As List(Of String) = webService.theQ(. . . .

甚至不合法

答案 1 :(得分:0)

错误几乎说明了一切。 webservice调用返回一个字符串,而不是字符串列表。如果查看脚本代码,它会将AJAX调用的结果解析为JSON。虽然我无法从代码的其余部分中确切地说出,但webservice调用很可能也返回了JSON字符串。

简单的确认方法:

{{1}}

如果字符串是JSON,那么您必须解析它以获取您寻找的列表。