今天用newlisp返回JSON的时候,发现jQuery 的ajax的done始终不能工作,用always就可以。首先排除了jQuery 2.1.0的bug,然后就检查了newlisp返回的HTTP response,果然又问题。这里记录一下:
1. 要设置HTTP Response的一些信息
2. dragonfly内置了一个json库,可以将list转换成json串。
下面看个例子:
(set ‘result ‘(("status" 0))) ;; create new code copy on local filesystem (define (Resource.Cc:create) (set ‘cpp-file-path (string SOURCE_LOCATION "/" ($POST "file_name"))) (set ‘cpp-file-code (string SOURCE_LOCATION "/" ($POST "code"))) (if (write-file cpp-file-path cpp-file-code) (begin (Response:content-type Response:json-type) (Response:status 200) (print (Json:lisp->json result))) ) )
注意
1. begin语句里面两个Response上下文的函数分别设置了返回的数据类型和HTTP Status
2.用print将HTTP reponse内容返回出去
3. Json:lisp->json 帮助将内容编程json格式。json.lsp文件在下面的目录内:
dragonfly-framework/plugins-inactive/artfulcode/
{"status": 0}
相关API文档参考: