【发布时间】:2016-06-21 19:14:33
【问题描述】:
我正在尝试发送从RadGrid 的选定行检索到的GridDataItem 对象。
但是当我进行此 AJAX 调用时,我收到 Uncaught RangeError: Maximum call stack size exceeded 错误:
编辑:当我运行代码时,我的 AJAX 成功触发,但我在 WebMethod 上的断点从未命中。在此之后,页面会暂时冻结,然后我收到上面提到的错误。
jQuery
$(document).ready(function () {
$('#<%=btnTransferIn.ClientID%>').on('click', function () {
var grid = $find("<%= gridStudents.ClientID %>"); //Returns an Object
var gridSelItems = grid.get_selectedItems(); //Returns Array
//var selectedItem = gridSelItems[0]; //Returns an Object
AjaxTransfer(gridSelItems);
});
});
function AjaxTransfer(selectedItem) {
$.ajax({
type: "POST",
url: "GradeSheet2.aspx/btnTransferIn_Click",
data: { 'gsi': selectedItem },
dataType: "json",
contentType: "application/json; charset=utf-8",
success: alert('Complete')
})
}
C#
[System.Web.Services.WebMethod]
public static string btnTransferIn_Click(GridDataItem gsi)
{
return "Done";
}
web.config
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<appSettings>
<add key="AISAnalogPATH" value="\\tms-sse-01\tms_share\cbtExecutables\" />
<add key="ExternalCAIPath" value="\\tms-sse-01\tms_share\cbtExecutables\" />
<add key="AISDigitalPath" value="\\tms-sse-01\tms_share\cbtExecutables\" />
<add key="AuthorwarePath" value="\\tms-sse-01\tms_share\cbtExecutables\" />
<add key="QuestionMarkPath" value="\\tms-sse-01\tms_share\cbtExecutables\" />
<add key="WelcomeMessage" value="Welcome to the TMS 2016 Program"/>
<add key="Location" value="STL"/>
<add key="TMSPagesConnectionString" value="server=tms-sse-01;User ID=xcv;Password=mumumu777;Initial Catalog=qwer12344567;"/>
<add key="TMSConnectionString" value="server=tms-sse-01;User ID=xcv;Password=mumumu777;Initial Catalog=qwer12344567;"/>
<add key="LogPath" value="e:\TMS\TMS_Log\"/>
<add key="cbtPath" value="E:\C17CBT\"/>
<add key="xmlPath" value="E:\TMS_XML\"/>
<add key="TMSVersionId" value="2.0"/>
<add key="PageHeight" value="750px"/>
<add key="Telerik.ScriptManager.TelerikCdn" value="Disabled"/>
<add key="Telerik.StyleSheetManager.TelerikCdn" value="Disabled"/>
</appSettings>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="ChartImage_axd"/>
<remove name="Telerik_Web_UI_SpellCheckHandler_axd"/>
<remove name="Telerik_Web_UI_DialogHandler_aspx"/>
<remove name="Telerik_RadUploadProgressHandler_ashx"/>
<remove name="Telerik_Web_UI_WebResource_axd"/>
<add name="Telerik_Web_UI_DialogHandler_aspx" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" preCondition="integratedMode"/>
<add name="Telerik_Web_UI_SpellCheckHandler_axd" path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" preCondition="integratedMode"/>
<add name="Telerik_Web_UI_WebResource_axd" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" preCondition="integratedMode"/>
<add name="ChartImage_axd" path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" preCondition="integratedMode"/>
<add name="Telerik_RadUploadProgressHandler_ashx" path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" preCondition="integratedMode"/>
</handlers>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<httpHandlers>
<add path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" validate="false"/>
<add path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false"/>
<add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false"/>
<add path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" validate="false"/>
<add path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false"/>
</httpHandlers>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="Microsoft.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5"/>
<authentication mode="Windows"/>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
<controls>
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit"/>
<add tagPrefix="telerik" namespace="Telerik.Web.UI" assembly="Telerik.Web.UI"/>
<add tagPrefix="TMSWeb" tagName="PersonList" src="~/TMS/Controls/PersonList.ascx"/>
<add tagPrefix="TMSWeb" tagName="DateTemplate" src="~/TMS/Controls/DateTemplate.ascx"/>
</controls>
</pages>
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.1.0.4" newVersion="2.1.0.4"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
我注意到,如果我将 WebMethod 的参数更改为字符串并传入字符串而不是对象,它就可以工作。因此,对象或我将其传递给 WebMethod 的方式似乎有问题。
我在进行 AJAX 调用之前检查了控制台中的对象,我认为它看起来还不错。虽然,我对它的了解并不高。
我希望我没有遗漏任何太重要的东西。如果需要更多信息,请告诉我。
提前致谢!
【问题讨论】:
-
请贴一些代码..
-
你是把你的 JS 分隔在一个文件中还是一个脚本标签?发布一些代码将有助于了解更多...
-
应该没什么区别,但它在脚本标签中。
-
发布您的 web.config 文件
-
皮耶罗·阿尔贝托,没问题。很快就会更新问题。
标签: javascript c# asp.net ajax telerik-grid