2011-01-10 9 views
1

私のWebページのボタンクリックイベントでjQuery.ajaxコールがあります。このajax呼び出しは、かなり多くのマークアップをサーバーに戻します。いくつかの処理の後、サーバーは小さなURLアドレスをポストバックします。これはうまく動作しますが、他の時はうまく動作しません。私はajax呼び出しの直前にブレークポイントを持ち、WebMethodにもいくつか持っています。時にはWebMethodがヒットしないこともあります。jQuery.ajaxコールでC#WebMethodが呼び出されないことがあります

.ajax呼び出しが失敗する原因は何ですか?私は送信しているパラメータに何かがなければならないと仮定しています。しかし、私はescapeマークアップしています。

誰でもアイデアがありますか?私はあなたがこのようなあなたの方法を書き換えることをお勧めし

$.ajax({ 
    type: 'POST', 
    url: 'WebServices.asmx/GetBitmapPathForVML', 
    contentType: 'application/json; charset=utf-8', 
    data: '{"sVML" : "' + escape($('#divChart')[0].innerHTML) + 
     '","width" : 800,"height": 600}', 
    dataType: 'json', 
    success: function(result) { 
      var newWindow = window.open ("", "Chart",""); 
      //blah blah 
      newWindow.document.write("<BODY>"); 
      newWindow.document.write(
       '<img src="file" alt="Chart"></img>'.replace('file',result.d) 
      ); 
      newWindow.document.write("</BODY>");  
      //blah blah 
    } 
}); 
+0

このメソッドに何も(null)を投稿しないと、他の方法でサービスにアクセスできますか? – dexter

+1

jQuery ajaxの "error"と "timeout"オプションを確認してください。また、Webサービスを呼び出す方法にいくつかの問題がある場合は、クライアントからスクリプトエラーを取得する必要があります。 –

+0

@マックスはい私はそうだと思う –

答えて

1

自分の質問に答えるのが好きではありません(私は本当にそうではありません)。しかし、問題は最大のJSON長さプロパティを使用することでした。

私はanswer here

..andが...私のWebConfigにすべての答えみんな、エラーをキャッチについて、特にそれらのため

<system.web.extensions> 
    <scripting> 
     <webServices> 
      <jsonSerialization maxJsonLength="2097152"/> 
     </webServices> 
    </scripting> 
</system.web.extensions>  

おかげでこれを追加見つけました。

2

$.ajax({ 
    type: 'POST', 
    url: 'WebServices.asmx/GetBitmapPathForVML', 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify({ 
     sVML: $('#divChart').html(), 
     width: 800, 
     height: 600 
    }), 
    dataType: 'json', 
    success: function(result) { 
     var newWindow = window.open ("", "Chart",""); 
     //blah blah 
     newWindow.document.write("<BODY>"); 
     newWindow.document.write(
      '<img src="file" alt="Chart"></img>'.replace('file',result.d) 
     ); 
     newWindow.document.write("</BODY>");  
     //blah blah 
    } 
}); 
+0

'JSON.stringify 'を使用するにはどのライブラリが必要ですか? –

+0

['json2.js'](https://github.com/douglascrockford/JSON-js)。しかし、このメソッドは現代のブラウザではネイティブに実装されており、サポートされていればライブラリはネイティブメソッドに呼び出しを委譲します。したがって、最新のブラウザを使用している場合は、何も含める必要はありません。 –

+0

私はIE6用に開発することを余儀なくされています。 :O –

1

エルRonnoco、

私はエラーを追加するようにお勧めします:コールバックは何が起こっているかをチェックします。多分あなたはそれから有用な情報を得ることができます。

関連する問題