Получение данных POST из Web2py в локальный файл HTML - PullRequest
1 голос
/ 30 марта 2012

У меня были некоторые серьезные междоменные проблемы с jquery, поэтому я пытался обойти это через web2py.

Я отправляю данные POST из локального файла HTML на мой сервер web2py,Затем Web2py делает POST-запрос Python ко второму серверу (который решает междоменную проблему) и получает ожидаемый ответ.Как я должен получить этот ответ обратно в мой локальный файл HTML?

Я думал о том, чтобы сохранить эти результаты в базе данных и затем извлечь их с помощью перенаправления URL-адреса, но я не уверен, что смогу угадать, какой URL мне понадобится.Возможно, просто возьмите последнюю запись из базы данных.

Или есть лучший способ?

Я понимаю, что, вероятно, есть гораздо лучшие способы сделать это непосредственно из исходного локального html-файла и полностью обойти web2py, но я гораздо более удобен в python, чем js.

Так что я 'пытаюсь получить от:

[локальный html-файл] -> [POST на web2py] -> [POST на другой отдельный сервер] -> [ОТВЕТИТЬ на локальный html-файл]

Iпросто не могу разобраться с последним этапом.

Мой контроллер, который отправляет сообщения на 2-й сервер (это работает):

def index():
    response.headers['content-type'] = 'text/xml'
    xml = request.body.read()  
    query_args = { 'data': xml }
    encoded_args = urllib.urlencode(query_args)
    url = 'myserver.com'
    content = urllib2.urlopen(url, encoded_args).read()
    return response.render(dict(content=XML(content)))

мой локальный HTML-файл выглядит так (это правильно):

<script language="javascript">
function check()
 {

jQuery('.myclass').each(function(){ 
       var txt = $(this).serialize();   
            $.ajax({
    type: 'POST',
    url: 'myserver',
data:  'mydata',
statusCode: {
    302: function() {
        alert("302"); // this is never called
    },
    200: function() {
        alert("200");
    },
},
success: function (data, textstatus) {
    console.log(data);

},
error: function (data) {
},

});

});
 }

</script>

1 Ответ

1 голос
/ 31 июля 2012

Вам нужно будет поместить код в обработчик «success», который записывает ответ web2py в локальный HTML-документ.

Что-то вроде:

success: function (data, textstatus) {
   $('#some-element').html(data);
},

Когда происходит пост-запрос, вы можете альтернативно перенаправить обработчик успеха на новую страницу и каким-то образом сохранить данные XML в переменной сеанса и увидеть их на новой странице, но я думаю, что просто сделать это в javascript будет драматично упростить вещи.

РЕДАКТИРОВАТЬ: Я не уверен в природе ваших данных, поэтому, если это действительно XML (а не (X) HTML какой-то), то вам нужно обрабатывать данные в обратном вызове успеха вместо записи это к элементу DOM.

Вам понадобится пустой элемент, возможно, div: <div id='some-element'></div>, чтобы содержать ответ.

Похоже ли это на то, что вам нужно? Дайте мне знать, если я неверно истолковал.

...