Jquery 敲除post JSON表单数据post null
我在拔头发!!我已经阅读了所有的例子、教程等,其他的例子使这看起来很简单,但我是新手,不能让它工作 我有一个用户配置文件表单,我想从jQueryAjax请求中绑定它的值。本质上,我希望能够从服务器中提取一个概要文件,并将以前保存的任何数据加载到表单值中。我能够从API请求JSON,并使用映射插件将值加载到表单中(我在数据库中预先填充了概要文件)Jquery 敲除post JSON表单数据post null,jquery,ajax,json,knockout.js,Jquery,Ajax,Json,Knockout.js,我在拔头发!!我已经阅读了所有的例子、教程等,其他的例子使这看起来很简单,但我是新手,不能让它工作 我有一个用户配置文件表单,我想从jQueryAjax请求中绑定它的值。本质上,我希望能够从服务器中提取一个概要文件,并将以前保存的任何数据加载到表单值中。我能够从API请求JSON,并使用映射插件将值加载到表单中(我在数据库中预先填充了概要文件) $.getJSON("api/profile/" + "<?php echo $_SESSION['id']; ?>",function(j
$.getJSON("api/profile/" + "<?php echo $_SESSION['id']; ?>",function(json){
var viewModel = ko.mapping.fromJS(json);
ko.applyBindings(viewModel);
});
这是我的保存呼叫:
viewModel.save = function(){
$.ajax({
url:"api/profile/" + "<?php echo $_SESSION['id']; ?>",
contentType: 'application/json',
data: ko.mapping.toJSON(viewModel),
type: "POST",
dataType: 'json',
success: function(data) {
alert("What's UP!");
alert(data)
},
error: function (data) { alert("error" + data); }
});
}
viewModel.save=function(){
$.ajax({
url:“api/profile/”+“”,
contentType:'应用程序/json',
数据:ko.mapping.toJSON(viewModel),
类型:“POST”,
数据类型:“json”,
成功:功能(数据){
警惕(“怎么了!”);
警报(数据)
},
错误:函数(数据){alert(“error”+data);}
});
}
我知道这与save中的“data”行以及Knockout如何绑定到值有关,但就我个人而言,我无法理解。任何帮助都将不胜感激
这是最终适用于搜索的代码:
<script type="text/javascript">
var viewModel;
function callback(data) {
if (viewModel) {
// model was initialized, update it
ko.mapping.fromJS(data, viewModel);
} else {
// or initialize and bind
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
}
}
save = function() {
$.ajax({
url:"api/profile/" + "<?php echo $_SESSION['id']; ?>",
contentType: 'application/json',
data: ko.mapping.toJSON(viewModel),
type: "POST",
dataType: 'json',
success: function(data) {
alert( ko.mapping.toJSON(viewModel));
},
error: function (data) { alert("error" + data); }
});
}
$.ajax({
url: "api/profile/" + "<?php echo $_SESSION['id']; ?>",
contentType: 'application/json',
type: "GET",
dataType: 'json',
success: function(data) {
callback(data);
}
});
</script>
var模型;
函数回调(数据){
if(视图模型){
//模型已初始化,请更新它
fromJS(数据,视图模型);
}否则{
//或者初始化并绑定
viewModel=ko.mapping.fromJS(数据);
应用绑定(视图模型);
}
}
save=函数(){
$.ajax({
url:“api/profile/”+“”,
contentType:'应用程序/json',
数据:ko.mapping.toJSON(viewModel),
类型:“POST”,
数据类型:“json”,
成功:功能(数据){
警报(ko.mapping.toJSON(viewModel));
},
错误:函数(数据){alert(“error”+data);}
});
}
$.ajax({
url:“api/profile/”+“”,
contentType:'应用程序/json',
键入:“获取”,
数据类型:“json”,
成功:功能(数据){
回调(数据);
}
});
当我使用knockout-mapping-plugin时,我总是创建变量(可以是全局变量,也可以是任何应用程序名称空间中的变量)并只初始化模型一次,而所有其他ajax请求都只是更新模型,可能您错过了更新步骤
下面是代码(当然javascript代码是简化的):
它是否帮助您解决了问题?您是否可以使用Chrome Developer Tools或Fiddler进行检查,以确保这些字段没有实际发送?您可以在那里添加请求主体吗?因为您也在使用jQuery,所以我建议使用
.serialize()
来获取所有表单值。我不知道knockout.js。serialize API可以很好地工作,已经说过您可能还需要更新一些服务器端代码。使用firebug repsonseI更新我实际上更感兴趣的是请求(由javascript生成),而不是帖子(这将是服务器端的问题)。@AdityaParabserialize()
不适用于淘汰赛。敲除属性是函数,将被忽略。Knockout对于它自己的序列化非常有用,因为它知道如何正确地提取值。当你承认你不知道你所建议的框架时,你真的不应该给出这样的建议。然后再发回服务器,那会是什么样子?data:ko.mapping.toJSON(model)?我假设是的(我从不发回JSON本身),如果您正确初始化了模型并在回调时更新了模型,那么您应该使用ko.mapping.toJSON(model)从模型中获得正确的JSON。我可以做更多的调查,但以后有更多的空闲时间。
<script type="text/javascript">
var viewModel;
function callback(data) {
if (viewModel) {
// model was initialized, update it
ko.mapping.fromJS(data, viewModel);
} else {
// or initialize and bind
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
}
}
save = function() {
$.ajax({
url:"api/profile/" + "<?php echo $_SESSION['id']; ?>",
contentType: 'application/json',
data: ko.mapping.toJSON(viewModel),
type: "POST",
dataType: 'json',
success: function(data) {
alert( ko.mapping.toJSON(viewModel));
},
error: function (data) { alert("error" + data); }
});
}
$.ajax({
url: "api/profile/" + "<?php echo $_SESSION['id']; ?>",
contentType: 'application/json',
type: "GET",
dataType: 'json',
success: function(data) {
callback(data);
}
});
</script>
var model; // it is undefined, I just need to have the way to find whether the model was initialized or not
function callback(data) {
if (model) {
// model was initialized, update it
ko.mapping.fromJS(data, model);
} else {
// or initialize and bind
model = ko.mapping.fromJS(data);
ko.applyBindings(model);
}
}
// do ajax request and call callback(data) on success callback