2011-11-12 58 views
0

我正在使用guru4's soap client編寫一個簡單的「Hello world」程序。我從Chrome控制檯Uncaught TypeError: Cannot read property 'documentElement' of null收到錯誤消息。JavaScript SOAP客戶端拋出Uncaught TypeError

這是我的JavaScript。

<script src="soapclient.js"></script> 
    <script type="text/javascript"> 
    function say_hello() 
    { 

     var pl = new SOAPClientParameters(); 
     pl.add("name", "john"); 
     pl.add("times", 2); 
     SOAPClient.invoke("http://192.168.1.100:7789/", "say_hello", pl, true, say_hello_callBack); 
    } 
    function say_hello_callBack(r) 
    { 
     alert(r); 
    } 
    </script> 

這是我試圖與之交互的服務器。

import soaplib 

from soaplib.core.service import soap 
from soaplib.core.service import DefinitionBase 
from soaplib.core.model.primitive import String, Integer 

from soaplib.core.server import wsgi 
from soaplib.core.model.clazz import Array 

''' 
This is a simple HelloWorld example to show the basics of writing 
a webservice using soaplib, starting a server, and creating a service 
client. 
''' 

class HelloWorldService(DefinitionBase): 
    @soap(String, Integer, _returns=Array(String)) 
    def say_hello(self, name, times): 
     ''' 
     Docstrings for service methods appear as documentation in the wsdl 
     <b>what fun</b> 
     @param name the name to say hello to 
     @param the number of times to say hello 
     @return the completed array 
     ''' 
     results = [] 
     for i in range(0, times): 
      results.append('Hello, %s' % name) 
     return results 

if __name__=='__main__': 
    try: 
     from wsgiref.simple_server import make_server 
     soap_application = soaplib.core.Application([HelloWorldService], 'tns') 
     wsgi_application = wsgi.Application(soap_application) 

     print "listening to http://0.0.0.0:7789" 
     print "wsdl is at: http://127.0.0.1:7789/?wsdl" 

     server = make_server('localhost', 7789, wsgi_application) 
     server.serve_forever() 

    except ImportError: 
     print "Error: example server code requires Python >= 2.5" 

我有一種感覺,這個錯誤發生是因爲我依賴於SOAP客戶端內置XML生成器。

回答

0

你可以打開 'Web開發工具'(按Ctrl ++Ĵ),並看看JS代碼。可能沒有WSDL。可能是結果消息具有此「JavaScript SOAP客戶端」不支持的名稱(它應該命名爲MethodName + "Result",例如LoginResult)。