我已经阅读了很多文章的这个错误,我尝试了很多解决方案,但没有任何工作!我坚持这个错误,因为3天我希望有人可以帮助我,谢谢! 我正在做的是通过两种方式从我的mypage.aspx调用我的web服务:
A - )
MyWebservice.MyWebMethod("test",LunchMyFunction);
function LunchMyFunction(response) {
alert(response); // [object Object]
var gridView = $find('<%= MyGridView.ClientID %>');
gridView.set_dataSource(response);
gridView.dataBind();
}
这里gridview已正确填充,一切正常。
乙 - )
$.ajax({
type: "POST",
url: 'MyWebservice.asmx/MyWebMethod',
data:{ testVal : "test" },
success: function (response) {
alert(response); // [object XMLDocument]
var gridView = $find('<%= MyGridView.ClientID %>');
try {
gridView.set_dataSource(response);
} catch (err) {
alert(err);
}
gridView.dataBind();
},
error: function (err) { alert(err.statusText); }
});
这里我的web方法正在完成它的工作但是当涉及到setdatasource时:抛出一个错误: Sys.ArgumentTypeException:Sys.ArgumentTypeException:类型&#39;对象&#39;的对象无法转换为类型&#39;数组&#39;。参数名称:值
我认为抛出此错误是因为响应类型在两种情况下都不同,所以我尝试将类型设置为json以返回[object Object]。返回Object后,该方法仍会抛出相同的错误。我试过ScriptMode =&#34; Release&#34;在我的主页中不在mypage.aspx中的ToolkitScriptManager中,但没有任何改变。
<cc1:ToolkitScriptManager ScriptMode="Release" ID="ToolkitScriptManager1" AsyncPostBackTimeout="600" EnablePartialRendering="true" EnablePageMethods="true" runat="server">
<Services>
<asp:ServiceReference path="MyWebservice.asmx" />
</Services>
<Scripts>
<asp:ScriptReference path="~/JavaScript/WebKitFix.js" />
</Scripts>
</cc1:ToolkitScriptManager>
cc1的程序集是AjaxControlToolkit,mypage.aspx包含在母版页中。什么可能是问题的任何想法?我该如何解决?
答案 0 :(得分:0)
最后,经过搜索,我发现第二种方法的反应是:
{"d":[{"__type":"UploadedFile","Success":"Success","UploadedURL":"Uploaded URL"}]}
虽然我需要 response.d 来返回:
[{ "__type": "UploadedFile", "Success": "Success", "UploadedURL": "Uploaded URL"}]
这是我的错误,谢谢