2012-03-14 5 views
0
function sendStates(data) { 
    var states = new Object(); 
    states.Id = 1; 
    states.Name = "Chandan"; 
    $.post("WebService.asmx/MultiDim/", states, function (data) { 
     alert("reached"); 
    }); 
} 

sendStates(null);

WebServiceのファイル:

[WebMethod] 
     public void MultiDim(statesTemplate states) 
     { 

     } 

MULTIDIM機能のdoesntが呼び出されます。

+0

URLマッピングを正しく設定しましたか? – Igor

+0

アラートがトリガーされますか?そうでない場合は、適切に接続していないことが示唆されます。これは、パスが正しくないことを示します。 「WebService.asmx/MultiDim /」は、呼び出し元のURLと同じ場所にありますか? – Steve

答えて

1

変更:

var states = new Object(); 
    states.Id = 1; 
    states.Name = "Chandan"; 

var object = {states: {Id: 1, Name: "Chandan" }} 
$.post("WebService.asmx/MultiDim/", object, function (data) { 
    alert("reached"); 
}); 

にメソッドのパラメータ名が必要とされています。 .NETに送信するオブジェクトには、リクエストの解析にメソッドパラメータ名が必要です。


[WebMethod] 
    public void MultiDim(statesTemplate states /* must be the javascript name too */) 
    { 

    } 

jQueryのは、あなたのオブジェクトの変数名はstatesであることを知りません。これは、2つのプロパティIdNameを持つオブジェクトだけです。

したがって、プロパティがstatesのオブジェクトを追加するのが答えです。

+0

これは同じことではありません...あなたのコードは、 "状態"オブジェクトを含む "状態"オブジェクトを作成します。 {Id:1、Name: "Chandan"}の部分だけを割り当てる必要があります。 – Steve

+1

@スティーブ、正確に。それは同じことではありません。私は明確にするために更新しました。 – Joe

+0

ああ、ちっちゃ...はい、更新されたバージョンはあなたのポイントを明確にします。謝罪。 :) – Steve

0

指定したURLに投稿していますか?別のjavascriptエラーがありますか?これまでのところ、私は1つの可能性のある問題を見る。あなたがコールバックを指定していない、すなわち、function(){}の部分の後に定義されているが、()の中に定義されているjson、xml、other。だから、それは無視され、出力され、ポスト内の機能をスキップして、データが返送されて何かをするかもしれない。

私はそれが動作しているかどうかを確認するためにどのように変更するかの例です。

function sendStates(data) { 
    var states = new Object(); 
    states.Id = 1; 
    states.Name = "Chandan"; 
    $.post("WebService.asmx/MultiDim/", states, function (data) { 
     alert("reached"); 
    }, 'json'); 
} 

まだ使用していない場合は、firebugというブラウザプラグインを入手することをおすすめします。それは、あなたがそうでないかもしれない潜在的な問題の多くを判断するのに役立ちます。

1

JSコードとWSは同じパスを共有していますか? Webサービスへのパスを指定してみてください。オブジェクトの初期化が簡単になりました。

function sendStates(data) { 
    var states = {Id: 1, Name: "Chandan"}; 
    $.post("/WebService.asmx/MultiDim/", states, function (data) { 
     alert("reached"); 
    }); 
} 

UPDATE: あなたは、要求が実際にサービスに送信された、または任意のポストからのフィードバックのためのコンソールで監視されていることを確認するために、ネットワークトラフィックを見たことがありますか?

私は全く問題なくテストアプリケーション(マイナスWebサービス)で次のように実装:

function dataTest (data) { 
    console.info('Arrived in the dataTest function'); 
    var states = { Id: 1, Name: 'Dustin' }; 
    $.post("Home/SomeTest", states, function (data) { 
     console.info('Post complete, data below'); 
     console.log(data); 
     alert('here'); 
    }, 'json'); 
} 
var ob = [{ Id: 3, Name: "Test" }, { Id: 4, Name: "Testing"}]; 
dataTest(ob); 

はUPDATE 2: あなたがその機能を確認することができたのは、実際には、コンソールまたはネットワークを経由して、呼ばなっていますか? console.info(ここにいくつかのテキストがあります)を入れて、あなたの機能にそれを組み入れているかどうかを判断してください。あなたの関数にそれを作っているのであれば、問題はWebServiceにあります。あなたが関数にそれを作っていないなら、問題はあなたのJSにあります。

更新3: 投稿したアドレスでWebServiceを呼び出すことができることを確認し、期待どおりに機能することを確認することから始めます。それがパスする場合: コールがイベントの結果であり、それに対応するハンドラである場合:イベントハンドラからトレースして、実際にトリガされていることを確認し、最後にsendStates(data)コール。 Else:ブレークポイントを設定し、sendStates(データ)呼び出しを行っていることを確認します。 まだGoogle Chromeを使用していない場合、Javascriptによるデバッグが公園内で行われます。運が良かった!

関連する問題