2016-08-28 9 views
0

Аякса "POST" запускается witht этих PARAMATERS:Twisted: Я не могу получить Ajax "данных" параметры

function test22(portnb){ 
    console.log(portnb) 
    $.ajax({url: "action", 
      dataType : 'html', 
      type: "POST", 
      data: portnb, 
      success: function(strData2){; 
      console.log(strData2); 
      $("#content3").html(strData2); 
      } 
    }); 
}; 

Он обрабатывается скрученным питоном скрипт :(см interresting части ниже)

class Test3Handler(resource.Resource): 
    isLeaf = True 

    def __init__(self): 
     resource.Resource.__init__(self) 
    def render_POST(self, request): 
     argo = request.content.getvalue() 
     print(argo) 
     retp = "<ul><li>" 
     retp += argo 
     retp += "</ul>" 
     print (retp) 
     return retp 
if __name__ == "__main__": 
    import sys 
    from twisted.internet import reactor 
    testHandler = TestHandler() 
    test2Handler = Test2Handler() 
    test3Handler = Test3Handler() 
    root = static.File('/home/pi/web4') 
    root.putChild('test', testHandler) 
    root.putChild('test2', test2Handler) 
    root.putChild('action', test3Handler) 
    reactor.listenTCP(8082, server.Site(root)) 
    reactor.run() 

вопрос заключается в том, что я не могу получить параметр "данных", посланный Ajax (данные: portnb). переменная «argo» пуста.

Я новичок в Python/Ajax. Можете ли вы помочь мне решить эту проблему? Будет очень полезно разработать что-то более сложное позже. Благодаря Жиль

+2

Какова ценность 'portnb'? – Quentin

+0

попробуйте отправить его как 'data: {portnb: portnb}' и получить значение как сообщение на другом конце – Regolith

ответ

-1

Вы должны установить DATATYPE в json и в поле данных отправить объект как { params: portnb }

+0

«Вы должны установить dataType для json» - Абсолютно нет. Код на стороне сервера явно возвращает HTML, а не JSON. – Quentin

+0

«отправить объект, как {params: portnb}» - Почему? Код на стороне сервера пытается прочитать необработанное тело POST. Каким будет использование URL-кодирования данных? (И это предполагает, что 'portnb' еще не объект) – Quentin

+0

Спасибо за вашу помощь. - portnb = 23 - Я бы предпочел использовать «html» в качестве типа данных, потому что в конце я хотел бы показать его на странице html. Я сделал то, что вы предлагали, и это работает. Вот окончательный код Ajax: DATATYPE: 'HTML', типа: "POST", данные: {параметр: portnb}, я работал над ней MRE, чем 1 неделя без успеха, и теперь он работает , Ребята, вы и этот форум самые лучшие. Большое спасибо С уважением, Gilles – Gilles

0

portnb = 23. Когда Ajax "данные: {portnb}", сценарий питона получает «portnb = 23" . Мне нужно было бы получить 23, а не portnb = 23. Есть ли простой способ сделать это? Спасибо, Gilles