Вызов jQuery.ajax иногда не запускает C # WebMethod - PullRequest
1 голос
/ 10 января 2011

У меня есть вызов jQuery.ajax на событие нажатия кнопки на моей веб-странице.Этот ajax-вызов отправляет довольно много разметки обратно на сервер.После некоторой обработки сервер отправляет обратно небольшой URL-адрес.Это работает хорошо иногда, но в других случаях нет.У меня есть точка останова перед вызовом ajax, а также есть некоторые в моем WebMethod.Похоже, что иногда 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
    }
});  

Ответы [ 3 ]

2 голосов
/ 10 января 2011

Я бы порекомендовал вам переписать ваш метод так:

$.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
    }
}); 
1 голос
/ 10 января 2011

Не люблю отвечать на мой собственный вопрос (правда, я не такой).Но проблема была связана со свойством максимальной длины JSON.

Я нашел ответ здесь

.. и добавил его в свой webconfig ...

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

Спасибо за все ответы, ребята, особенно те, которые касаются обнаружения ошибок.

1 голос
/ 10 января 2011

Эль Ронноко,

Я бы предложил вам добавить ошибку: обратный вызов, чтобы проверить, что происходит. Может быть, вы можете получить полезную информацию от этого.

...