首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajax调用不适用于c#方法

ajax调用不适用于c#方法
EN

Stack Overflow用户
提问于 2016-09-27 06:26:50
回答 2查看 602关注 0票数 0

我想在关闭或重定向其他页面时调用解锁方法,因此我使用了ajax调用。但解锁的方法不是开火。请让我知道我在做什么

代码语言:javascript
复制
 [WebMethod]
public void Unlock()
{
    CreateProject_BL _objcreatebl = new CreateProject_BL();
    _objcreatebl.upd_lockedBy(Convert.ToInt32(Request.QueryString["project_id"]), "");
}

  function HandleOnclose() {
        $.ajax({
            type: "POST",
            url: "ProjectDetails.aspx/Unlock",
            contentType: "application/json; charset=utf-8",
            dataType: "json"
        });
    }
window.onbeforeunload = HandleOnclose;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-27 06:34:50

在ajax调用中在哪里传递project_id?在您的方法中传递project_id

代码语言:javascript
复制
 [WebMethod]
public void Unlock(string project_id)
{
    CreateProject_BL _objcreatebl = new CreateProject_BL();
    _objcreatebl.upd_lockedBy(Convert.ToInt32(Request.QueryString["project_id"]), "");
}

然后将ajax调用重写为

代码语言:javascript
复制
function HandleOnclose() {
        $.ajax({
            type: "POST",
            url: "ProjectDetails.aspx/Unlock",
            contentType: "application/json; charset=utf-8",
            data : "{project_id:'1234'}",
            dataType: "json"
        });
    }
window.onbeforeunload = HandleOnclose;
票数 0
EN

Stack Overflow用户

发布于 2016-09-27 06:44:54

有几个问题。首先,您的WebMethod需要一个querystring参数,但是您正在发送一个POST请求,并且您也不会在请求中发送任何数据。您应该将project_id作为一个对象中的参数提供给AJAX请求的data属性。

还请注意,在onbeforeunload事件中发送AJAX请求是非常少的合法情况之一,您需要使用async: false在AJAX请求完成之前停止关闭页面。试试这个:

代码语言:javascript
复制
[WebMethod]
public void Unlock(string projectId)
{
    CreateProject_BL _objcreatebl = new CreateProject_BL();        
    _objcreatebl.upd_lockedBy(Convert.ToInt32(projectId), "");
}
代码语言:javascript
复制
function HandleOnclose() {
    $.ajax({
        type: "POST",
        async: false, // only due to running the code in onbeforeunload. Never us it otherwise!
        url: "ProjectDetails.aspx/Unlock",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: { projectId: '1234' }
    });
}
window.onbeforeunload = HandleOnclose;

还请注意,根据浏览器的不同,您可能根本无法在onbeforeunload事件中发送AJAX请求。有关更多详细信息,请参阅this question

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39717460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档