2017-05-06 38 views
0

JavaScript関数内にあるAJAX呼び出しでサーバーを呼び出すASPXページがあります。私は、サーバーに送信された(json)データを処理してから、サーバーからクライアントにデータを返して、パラメーターを使用して関数を呼び出す必要があります。ASPXコードビハインド呼び出しページWebMethodのクライアントスクリプト

私のAjaxコード

function() { 
     var myVar= "ooooblah"; 

     $.ajax({ 
      type: "POST", 
      url: "MyPage.aspx/TestFunc", 
      data: "{val:'" + myVar + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess 
    }); 
} 

aspx.cs

[WebMethod] 
public static void TestFunc(string val) 
{ 
    //process code here 
    Page.ClientScript.RegisterStartupScript(...); //tried using this but it don't work 
} 

の背後にある私のコード私がコンパイルしようとすると、私が手にエラーがある:

エラーCS0120非静的フィールドにはオブジェクト参照が必要です。m ethod、またはプロパティ「Control.Page」

エラーCS0026キーワード「この」静的プロパティ、静的メソッド、または静的フィールド初期化子では有効ではありません

私がPage_Loadの中で外にそれを配置する必要があります? これを修正する方法がわかりません

答えて

0

これは「ステートレス」(POST)コールであり、そのコールはページコンテキスト外で実行されるため、C#からJavaScript関数を呼び出すことはできません。そのメソッドは他のクラスにもあり得ますが、結果は同じになります。コントロール配列にもページプロパティにもアクセスすることができません。そのため、メソッドは静的です。

できることは、より複雑な応答をOnSuccess機能のヒントとして追加することです。だから、ONSUCCESS関数がチェックすることができます。サーバー上のクライアント

<script type="text/javascript"> 

    var myVar= "ooooblah"; 

    $.ajax({ 
     type: "POST", 
     url: "WebMethodTest.aspx/TestFunc", 
     data: "{val:'" + myVar + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: onSuccess 
    }); 

    function onSuccess(data) { 
     alert(data.d.MainResponse); 

     if (data.d.ExtraArgsForMagicFunction) { 
      magicFunction(data.d.ExtraArgsForMagicFunction) 
     } 
    } 

    function magicFunction(args) { 
     alert(args[0]); 
    } 
</script> 

「私は応答でExtraArgsForMagicFunctionプロパティを取得する場合ねえ、それは私が私の魔法の関数を呼び出す必要があることを意味し、」

[Serializable] 
public struct FuncResult 
{ 
    public string MainResponse; 
    public string[] ExtraArgsForMagicFunction; 
} 
[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static FuncResult TestFunc(string val) 
{ 
    return new FuncResult() 
    { 
     MainResponse = val + "Response", 
     ExtraArgsForMagicFunction = new[] { "Some Extra Args" } 
    }; 
} 

を知りたい場合は、このうちASP.NET Calling WebMethod with jQuery AJAX "401 (Unauthorized)"

401のチェックを取得する場合、「なぜdの?」これをチェックしてくださいWhat does {"d":""} means in asp.net webservice response

+0

ありがとうございます。私の質問を理解したとは思えません...私はJavaScriptからC#(コードビハインド)に行くことができます...私が問題を抱えているのは別のJavaScript関数を呼び出すときです私はC#で...私は成功をちょうど打つことができます – fifamaniac04

+0

@ fifamaniac04私は私の答えを変更しました – hardkoded

+0

ありがとう、しかし私はajaxを働かせることができました...私はJSONデータを正しくフォーマットしていなかった – fifamaniac04

関連する問題