嘿,我得到的错误是:
'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);
}
});
任何帮助都会很棒!
答案 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,那么您必须解析它以获取您寻找的列表。