我不是jQuery的专家,认为我更新鲜.这是我的代码,其中一个不负责Request Body提交的jQuery JSON数据.
<!doctype html>
<html lang="en">
<head>
<title>jQuery Data submitted by JSON Body Request</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$.ajax({
url : "/",
type: "POST",
data: [
{id: 1, name: "Shahed"},
{id: 2, name: "Hossain"}
],
contentType: "application/json; charset=utf-8",
dataType : "json",
success : function(){
console.log("Pure jQuery Pure JS object");
}
});
</script>
</head>
<body>
<p>
Example of submission JS Object by JSON Body Request<br/>
Its could submitted mass amount of data by Message body<br/>
It's secured and faster …Run Code Online (Sandbox Code Playgroud) 我不知道如何在ColdFusion 9中处理这个问题,我有一个表单被提交(POST)与元素复选框,称为items [].
当我做一个<cfdump var="#form#" />没问题的时候,我得到所有用正确名称显示的项目,items[]例如:
struct
ITEMS[] 13,14
FIELDNAMES ITEMS[]
Run Code Online (Sandbox Code Playgroud)
但是会<cfdump var="#form.items[]#" />导致错误.如何访问CF9字段值?以某种方式循环通过它?
我似乎无法对数组做任何事情来获取它的id?思考?我有点难过,ColdFusion不是在网上找到示例/引用的最简单的语言.;)
有没有正确的方法来解决这个问题?我需要从那里获取ID,以便我可以参考表单中检查的行,因此我可以跟进一个动作.
谢谢!
对于具有RESTful后端的webapp,我使用jquery的$ post将一些json发布到服务器.令我惊讶的是,json被填充在请求的表单数据的参数键中,而不是在请求体中.我可以想到其他一些方法,但问题是为什么它不能像我期望的那样工作.
在服务器上我使用scalatra并打印一些请求信息:
println("Request received:")
println(fromInputStream(request.getInputStream).getLines().mkString)
println("--------------")
println(request.getParameterMap.toString)
println("==============")
Run Code Online (Sandbox Code Playgroud)
现在一个简单的卷曲,我认为是正确的:
curl -X POST http://localhost:8080/x -H "Content-Type: application/json" -d '{"a":"b"}'
Run Code Online (Sandbox Code Playgroud)
生产:
Request received:
{"a":"b"}
-------------
{}
==============
Run Code Online (Sandbox Code Playgroud)
并用html + js来说明问题:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<body>
<button type="button" onclick="doPost()">
POST
</button>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
function doPost() {
$.post("http://localhost:8080/x",
JSON.stringify({"a":"b"} ),
function(data) {});
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
生产:
Request received:
--------------
{{"a":"b"}=[Ljava.lang.String;@7a2897ac}
==============
Run Code Online (Sandbox Code Playgroud)
因此,如果我使用带有字符串化的json字符串和回调的$ post,我会将所有内容填充到单个参数键中.如果这是正常的,我想知道为什么,以及我应该如何在服务器上彻底解开这个问题.如果不正常,我想知道我应该怎么做才能使用$ post在响应体中获取它.
更新:现在有一个jquery的功能请求,以支持$ .post上的contentType
我有一个控制器,在请求体中需要一些json ?并用它做了很棒的事情:
def myController(){
def myAction(){
println "Here is request.JSON: ${request.JSON as JSON}"
println "Here is params: $params"
//do awesome stuff with request.JSON only
return
}
}
Run Code Online (Sandbox Code Playgroud)
所以我可以用cURL来达到这个目的:
curl -i -H "content-type: application/json" -d "{\"someVariable\":\"Absolutely\"}"
Run Code Online (Sandbox Code Playgroud)
我的grails控制器打印:
Here is request.JSON: {"someVariable":"Absolutely"}
Here is params: [controller:'myController', action:'myAction']
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都那么好,但是当我尝试用jQuery做到这一点时,它会进入params!
阅读了这两个问题: 使用jQuery将POST-body设置为JSON对象
我对如何编写.js的最佳猜测是:
var sendMe = {"someVariable":"Absolutely"}
$.ajax({
url: '/myController/myAction',
type: 'POST',
processData: false,
data: JSON.stringify(sendMe),
dataType: 'json',
success: function(data) {
},
error: function(request, status, error) {
}
});
Run Code Online (Sandbox Code Playgroud)
但当我这样做时,我的控制器打印: …
我需要通过ajax请求向服务器发送一个js对象;是一个包含节点 js 中带有 Sequelize orm 的 sql 查询参数的对象;一个例子是这样的:
var data =
{
include: [
{ model: model.Shop },
{ model: model.Product,
include: [
{ model: model.File }
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
它可以包含嵌套在多个级别上的对象数组;在发送之前,如果需要,我可以将其转换为有效的 JSON,如下所示:
var data =
{
"include": [
{ "model": "model.Shop" },
{ "model": "model.Product",
"include": [
{ "model": "model.File" }
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我尝试将其作为 JSON 发送:
$.ajax({
//...
data: data
});
Run Code Online (Sandbox Code Playgroud)
问题是,当我在节点服务器中对接收到的字符串做 JSON.parse 时,每个属性的值都是一个字符串并且它不被识别为模型对象;
我怎样才能让我的服务器能够理解这一点?