问题描述
我试了一下在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挺好的。。
嗯那倒是没必要用页面