2011-07-20 2 views
0

にデータを送信し、私はこのようなJSを持っている: - クラスファイルの背後にある同じウェブページのコードでjqueryのAJAXは、私のaspxページでは、キーと値のペア

<script language="javascript" type="text/javascript"> 
    $("#btnLoad").click(function() { 

     var dataForAjax = "{'datakey':'hello'}" 

     $.ajax({ 
      type: "POST", 
      url: "Ajax__Demo.aspx/SendFile", 
      data: dataForAjax,     
      success: function (msg) { 
       alert(msg); // Problem with this line. It is not showing the value. 
      } 
     }); 

    }); 
</script> 

、私はこのような定義されたWebMethod属性を持っている: -

[WebMethod]   
    public static string SendFile(string key, string data) 
    { 
     return data; 
    } 

何らかの理由で、私はHTML側で使用されている警告のデータを取得することができます。警告(msg);私に何も与えていない、私は渡された価値を戻すことを期待しています。この場合は 'Hello'でなければなりません。

私はここに非常に小さい何かを見逃しています、ここで私を助けてください。

答えて

1

は、これらを変更します。

AJAXコール

$(document).ready(function() { 
    $("#btnLoad").click(function (evt) { 
     var dataForAjax = "{'datakey':'hello'}"; 
     $.ajax({ 
      contentType: "application/json", 
      data: dataForAjax, 
      type: "POST", 
      url: 'Test1.aspx/SendFile', 
      success: function (msg) { 
       var msg = msg.hasOwnProperty("d") ? msg.d : msg; 
       alert(msg.datakey); 
      } 
     }); 
     evt.preventDefault(); 
    }); 
}); 

WebMethod

[WebMethod] 
public static object SendFile(string datakey) 
{ 
    return new 
    { 
     datakey = datakey 
    }; 
} 

は、この情報がお役に立てば幸いです。

更新:

  1. `evt.preventDefaultがあなたのコントロールがinput type="submit"asp:Button
  2. .dのようなものは、XSSの脆弱性を防ぐために、ASP.NET 3.5+機能であるとしたときにポストバックを防止するためです。戻り値の型は、自動シリアライズするためのWebメソッドのオブジェクト(link here
  3. です(link here
  4. また、あなたが$.ajaxコールでdataTypeを省略することができますがcontentTypeは私がしようとした絶対的な必要(link here
+0

ありがとうございます。しかし、それはなぜとても複雑です。私は暗黙のうちに返信msgオブジェクトを準備すると思っていました。そしてpreventDefault()の使用法は何ですか? – Karan

+0

@Karan:更新された回答 – naveen

0

この:

var dataForAjax = "{'datakey':'hello'}" 

は次のようになります。

var dataForAjax = {'datakey':'hello'} 

AJAXは(とにかくデフォルトでは)ないJSONを送信する - それがFORMINPUT要素を送信! jQueryはいいですし、あなたのためにjavascriptオブジェクトを変換します。

あなたが本当に必要な場合は、jsonを送ることができますが、私はあなたが本当にそれをするのは間違いです。

+0

です新しい構文ですが、それでもまだ動作していません。他に何かがありません... – Karan

+0

あなたのWebメソッドは私には見えません。あなたは 'datakey'と言っていますが、webmethodにはそれがありません。 @ Rattlemouseの変更を試してください。 – Ariel

+0

名前を変更しても動作しません。 – Karan

0

メソッドにデータを送信するときは、Javascriptのobjectを使用して適切なキーと値のペアを送信する必要があります。あなたのメソッドの Examle:

<script language="javascript" type="text/javascript"> 
$("#btnLoad").click(function() { 

    var dataForAjax = {'key' :'datakey', 'data' : 'hello'}; 

    $.ajax({ 
     type: "POST", 
     url: "Ajax__Demo.aspx/SendFile", 
     data: dataForAjax,     
     success: function (msg) { 
      alert(msg); // Problem with this line. It is not showing the value. 
     } 
    }); 

}); 

関連する問題