Sharepoint2013 JqAjax调用后台webpart方法的问题

问题描述

我试了一下在sharepoint里面用ajax请求后台数据,但是始终连不到后台方法,后台打了断点一直也都进不去。在前端js改了改,大致出现两种情况:一个是进了success回调方法,直接返回整个HTML的页面代码,看了一下网上说的是因为服务器做了错误处理,转向一个友好页面,这样客户端得到的是200状态,导致执行了success回调。另一种是直接走了error回调,返回的status=500,readyState=4,这个我没懂什么意思,但是这两种情况都没有调用到后台方法。我怀疑有两个问题,要么就是ajax的url请求地址有问题,要么就是说需要改什么配置文件,但是我弄了一整天了还是不知道什么问题,还请老司机们告诉我怎么改这个bug。publicpartialclassVisualWebPart2:WebPart{publicstaticHttpResponseHttpRes{get;set;}[WebMethod]publicstaticstringprovinceString(stringparent){HttpContext.Current.Response.ContentType="application/json";return"123";}

jQuery(document).ready(function(){jQuery.ajax({type:"POST",url:"../base/editform1.aspx/provinceString",data:{"parent":"4"},contentType:"application/json",dataType:"json",success:function(data){alert(data.d);},error:function(XMLHttpRequest,textStatus,errorThrown){alert(XMLHttpRequest.status);alert(XMLHttpRequest.readyState);alert(textStatus);alert("获取失败!");}})})

解决方案

解决方案二:
该回复于2016-01-14 08:41:15被版主删除
解决方案三:
用ASPX页面试试好使不
解决方案四:
引用2楼FoxDave的回复:

用ASPX页面试试好使不

嗯,单独新建一个项目是可以的,但是在sharepoint里面就不行了。不知道是webpart的方法调用问题,还是需要改sharepoint的配置文件才能实现ajax。
解决方案五:
你别Ajax调用WebPart的页面,你自己写一个一般处理程序,然后发布到iis里面,应用程序池和你的站点共用一个,就可以了;剩下调用的问题,就跟asp.net一模一样了,如果一般处理程序里面需要调用SharePoint的东西,最好提升一下权限。
解决方案六:
还有,如果你在SharePoint的页面里,用ajax处理SharePoint后台数据,也许ECMAScript是个更好的选择,对于列表的增删改查都是更加方便的,省去了开发一般处理程序的过程,而且ECMAScript本身就是异步处理机制的。
解决方案七:
在sharepoint里用aspx页面好使不
解决方案八:
引用6楼FoxDave的回复:

在sharepoint里用aspx页面好使不

aspx和应用程序页都不太好使,最好用一般处理程序,要不然ajax会返回一堆乱七八糟的东西。。也可能需要特殊处理,不过我没深入研究,就用ashx挺好的。。
解决方案九:
引用7楼linyustar的回复:

Quote: 引用6楼FoxDave的回复:
在sharepoint里用aspx页面好使不

aspx和应用程序页都不太好使,最好用一般处理程序,要不然ajax会返回一堆乱七八糟的东西。。也可能需要特殊处理,不过我没深入研究,就用ashx挺好的。。

嗯那倒是没必要用页面

时间: 2024-09-24 19:30:52

Sharepoint2013 JqAjax调用后台webpart方法的问题的相关文章

.net下不用AJAX实现前台JS调用后台C#方法(小技巧)

纯属小技巧,高手见笑了. 一提到如何在前台JS调用后台C#方法,AJAX成为了必然的想法. 只是实现的细节采用AJAX 1.0或者AjaxPro的区别. 其实如果不用AJAX,我们也能够很方便地利用JS调用后台方法. 步骤如下: 1 前台放一个按钮.设置为隐藏.注意:不能直接设置Visible=false的方式,这样的话在ASP.Net 2.0编译后的代码里是找不到这个按钮的.需要设置风格:style="display:none;" 2 双击按钮,写入C#方法,或者写一个调用后台其他方

ajax-前台js调用后台Ajax方法 提示未定义

问题描述 前台js调用后台Ajax方法 提示未定义 后台方法以及注册AjaxWeb.config配置js调用就报错也应用了jquery.js这个文件本地直接运行时可以的,但是传到服务器就不行了!! 解决方案 ajax 前台js调用后台方法JS前台调用后台方法后台调用前台js的方法 解决方案二: ajaxpro使用的prototype和jquery会争用$的使用权出现冲呕吐.jquery要调用jQuery.noConflict()释放$的使用 而且注意aspx要存在runat=""ser

【谢谢】repeater 中调用后台的方法时,怎么能直接传递整个对象?

问题描述 repeater中调用后台的方法时,怎么能直接传递整个对象?比如:<%a(Eval("字段"))%> 是<%%>,不是<%#%>~这样的话,调方法a,传单个字段.如果参数要多,就傻了.怎么才能传递整个对象呢~?谢谢 解决方案 解决方案二:什么是<%%>?你真的是在此输出内容吗?什么叫做"传递单个字段.传递整个对象"?你使用Eval的含义不就是传递字段吗,那么你把Eval()改为对象不就行了嘛.不过我觉得控怕你

asp.net 前台调用后台的方法,不会执行,急求,急急急急!!!!!

问题描述 有个后台cs函数protectedstringSave_yhht(stringczfs){stringmess="";if(!czfs.Equals("y"))returnmess;.........} 我前台写了个调用函数</form><scripttype="text/javascript">functionSave_yhht_qt(czfs){varmess='<%=Save_yhht("'

js调用后台servlet方法实例

 1.使用document.form.action方式   相关源码如下:   *.js   [javascript]       代码如下: <span style="white-space:pre"> </span> document.getElementById("sendPerson").value = SendPerson;  document.getElementById("currentTime").valu

js调用后台servlet方法实例_javascript技巧

1.使用document.form.action方式 相关源码如下: *.js [javascript] 复制代码 代码如下: <span style="white-space:pre">  </span> document.getElementById("sendPerson").value = SendPerson;  document.getElementById("currentTime").value = cur

jquery 调用后台[WebMethod]方法后,submit失效???

问题描述 如果不执行jQuery,submit没有问题! 解决方案 解决方案二:贴代码.

编程语言学习-编程 ajax 调用后台方法

问题描述 编程 ajax 调用后台方法 //15秒倒计时 var start = 15; var step = -1; function count() { document.getElementById("DaoJiShi").innerHTML = start; start += step; if (start < 0) start = 15; setTimeout("count()", 1000); } window.onload = count; 这么

js如何调用asp.net后台的方法

问题描述 我想通过js调用asp.net的一个方法publicstringdisplayDetail(stringname,stringsubject,stringvalid,stringmoney,stringmonth,stringcreatePeople,stringcheckPeople,stringcreateDate,stringpayDeadLine){},参数是通过js获得的varname=td_list[0].getElementsByTagName("span")[