What steps will reproduce the problem?
1. Define a service:
svc = new rpc.ServiceProxy("/app/test/call/jsonrpc", {asynchronus: false, protocol: 'JSON-RPC', sanitize: true, methods:['add']})
2. Call the service's add function:
svc.add({params:[50,2]});
What is the expected output? What do you see instead?
It is expected that no error will occur. Instead the following TypeError occurs:
Uncaught TypeError: Cannot read property 'message' of null
What version of the product are you using? On what operating system?
rpc-client v 0.8.0.2 (from the following url):
http://json-xml-rpc.googlecode.com/files/rpc-client-javascript-0.8.0.2.zip
Please provide any additional information below.
On line 427 of rpc.js, there is this statement:
if(response.error !== undefined){
When using google chrome to pause the script execution at line 427, i see that response.error is "null" (not undefined), and response.result is 52 (expected result). However, since the expression "response.error !== undefined" evaluates to True, the error branch is executed. resulting in the TypeError message printed to console. Also, my callback "onSuccess" function (when provided) is never executed.
I fixed this for my purposes by changing the line to:
if(response.error !== undefined && response.error !== null){
Though it seems "response.error != undefined" also works.
This is the value of the response object when script execution is halted at line 427:
response = {
error: null
id: 33
result: 52
version: "1.1"
}
NOTE: The jsonrpc service is a web2py function defined as follows:
@service.xmlrpc
@service.jsonrpc
def add(a,b):
return a + b
The code is in a controller called test.py within an application called app.
Using the python module xmlrpclib to access this service works as expected.
Original issue reported on code.google.com by Kas...@gmail.com on 23 Sep 2011 at 6:18
Original issue reported on code.google.com by
Kas...@gmail.com
on 23 Sep 2011 at 6:18