62,050
社区成员
发帖
与我相关
我的任务
分享
[WebMethod]
public bool BindAll(string jlzdID, string strUserID)
{
//ShowJlzdInfo(jlzdID); 按jlzdID查出一条数据并绑定到页面的文本框中。
//Bind(strUserID); 按用userID查询出数据资料柜中该用户上传的材料并绑定至页面中。
if (ShowJlzdInfo(jlzdID)&&Bind(strUserID))
{
return true;
}
else
{
return false;
}
}
这个方法主要是把查出来的数据绑定到页面中,本来我都没有返回值,不过没有返回值在前台好像不好调所以就加了返回值。现在的情况是我用普通JS脚本接收到我winfrom程序中传过来的cs(jlzdID,userID)函数中的两个参数的值然后要在JS中调用这个后台BindAll这个方法,并把接受到的两个值传给BindAll在后台给页面绑定值,可是不用Ajax他只是把BindAll方法走一遍,但是不能够把页面的值加载上,用Ajax我不知道怎么用呢,怎么把这两个值传到后台的BindAll方法中并且这个方法还能把值绑定到页面中并显示出来。。
下面是我现在正在编写的前台代码。
<script type="text/javascript">
function cs(jlzdID, userID) {
var url = "/JLZDShenQing/JlzdShenQing.aspx/BindAll";
var data = "{jlzdID:" + jlzdID + ",jlzdID:" + jlzdID + "}";
$.ajax({
url: url,
data: data,
cache: false,
type: 'POST',
contentType: "application/json",
dataType: 'json',
async: true,
timeout: 10000,
error: function(e) {
alert("error:请求超时...")
},
success: function(result) {
}
});
}
</script>
protected void Page_PreInit(object sender, EventArgs e)
{
if (!IsPostBack)
{
string method = Request.QueryString["Method"];
if (!String.IsNullOrEmpty(method))
{
switch (method)
{
case "MyMethod":
MyMethod();
break;
}
Response.End();
}
}
}
private void MyMethod()
{
int cId = int.Parse(Request.QueryString["cId"]);
...
// 使用 Response.Write(xxx) 输出你的数据
}
当然,你也可以用一个单独的 ashx 来处理 ajax 请求,这对于如果有多个页面调用同一个 ajax 请求很有用。将 url 改为 xxx.ashx?Method=xx&参数 这种形式就可以了。后台如下:
public void ProcessRequest (HttpContext context)
{
string method = context.Request.QueryString["Method"];
if (!String.IsNullOrEmpty(method))
{
switch (method)
{
case "GetMessage":
GetMessage(context);
break;
}
}
}
如果要使用 Session 的话,ashx 必须要实现接口 IRequiresSessionState,这里其实只是声明一下,不需要具体去实现。
ajax 加载的数据对你当前的页面不会造成影响,你通过 JS 操作 DOM 将返回的数据处理后放在适当的位置就可以了。
//webservers
[WebMethod(EnableSession = true)]
public string updateCatalogState(int cid,int cstate)
{
if (Session["userName"] != null)
{
if (CatalogAdmin.updateCatalogStateBycid(cid, (cstate == 0 ? 1 : 0)))//查询数据
return "success";
else
return "";
}
else
return "";
}
<a href="javascript:" onclick="ChangeUserState(<%# Eval("Cid").ToString() %>,<%#Eval("CState").ToString()%>)" id="changeStateBtn">11111</a></span>
<script type="text/javascript">
function ChangeUserState(cid,cstate){
if(confirm("确定操作?")){
WebService.updateCatalogState(cid,cstate,onSuccess);
}
return false;
}
function onSuccess(result){
if(result=="success"){
alert("更改成功!");
window.location="<%# Request.Url %>";
return ;
}
else {
alert("更改失败!");
window.location="<%# Request.Url %>";
return ;
}
}
</script>
<head runat="server">
<title></title>
<link href="../App_Themes/Default/StyleSheet.css" rel="stylesheet" type="text/css" />
<script src="../Controls/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<script type="text/javascript" >
function cs(jlzdID, userID) {
var a = '<%=BindAll("' + jlzdID + '","' + userID + '") %>';
window.location.href = location.href;
alert(jlzdID + "\n\t" + userID + a);
}
</script>
</head>
public string BindAll(string jlzdID, string strUserID)
{
ShowJlzdInfo(jlzdID);
Bind(strUserID);
return "wei";
}
我看着没区别啊,就一个<script type="text/javascript" >里面一个加type一个没加。。还有就是alert弹出的方式不一样啊。win.execScript(strScriptName, "javascript");
调用的。麻烦能写下这个Ajax是怎么写的吗?谢谢了。