2016-09-27 5 views
-1

私はajax呼び出しを使用しているので、他のページを閉じるかリダイレクトするときにunlockメソッドを呼びたいと思っています。メソッドのロック解除は起動しません。私に何をしているのか教えてくださいajax呼び出しがC#メソッドで機能していません

[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; 
+0

ちょうどいくつかの点検をしたかったのですが、ロック解除機能は確かにProjectDetails.aspxに含まれていますか?また、ProjectDetails.aspxはHandleOnCloseが座っているファイルと同じドメインにありますか? – snit80

答えて

0

ここで、あなたのajaxコールでproject_idを渡しますか? パスは、あなたの方法

[WebMethod] 
public void Unlock(string project_id) 
{ 
    CreateProject_BL _objcreatebl = new CreateProject_BL(); 
    _objcreatebl.upd_lockedBy(Convert.ToInt32(Request.QueryString["project_id"]), ""); 
} 

でPROJECT_IDや問題のカップルがあります

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

のように、AJAX呼び出しを書き換えます。まず、あなたのWebMethodはクエリーストリングのパラメータを期待していますが、あなたはPOSTリクエストを送信していますし、リクエスト内のデータも送信しません。 AJAXリクエストのdataプロパティへのオブジェクトのパラメータとしてproject_idを指定する必要があります。

onbeforeunloadイベントでAJAXリクエストを送信することは、AJAXリクエストが完了する前にページが閉じないようにするためにasync: falseを使用する必要がある正当なケースの1つです。これを試してみてください:

[WebMethod] 
public void Unlock(string projectId) 
{ 
    CreateProject_BL _objcreatebl = new CreateProject_BL();   
    _objcreatebl.upd_lockedBy(Convert.ToInt32(projectId), ""); 
} 
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

ありがとうございます – praveen

関連する問題