Jquery 如何从引导表中获取数据并用ajax保存?
我有一个如图所示的表,我想从中获取数据并用这个ajax函数保存,但它似乎没有将数据传递给php。当我在php代码中返回$this->request->data时,console.log()在.fail处触发,显示多个函数;当我返回json_encode($this->request->data)时,触发.done,但console.log()显示空数组 编辑: console.log(JSON.stringify(数组))= 我做错了什么 似乎我不能发布图片,所以这里有一个链接: 对不起我的英语,希望你能理解Jquery 如何从引导表中获取数据并用ajax保存?,jquery,ajax,cakephp,Jquery,Ajax,Cakephp,我有一个如图所示的表,我想从中获取数据并用这个ajax函数保存,但它似乎没有将数据传递给php。当我在php代码中返回$this->request->data时,console.log()在.fail处触发,显示多个函数;当我返回json_encode($this->request->data)时,触发.done,但console.log()显示空数组 编辑: console.log(JSON.stringify(数组))= 我做错了什么 似乎我不能发布图片,所以这里有一个链接: 对不起我的英
$("#modal-btn-salvar-desconto").on("click", function() {
var dadosTabela = $("#tabela-estabelecimento").bootstrapTable("getData");
var array=[];
$(dadosTabela).each(function(index) {
array[index] = {
"SIA_ID" : this.ID,
"DESCONTO_CNES" : $("#modal-valor-desconto").val().replace("R$", ""),
"VALOR_PAGO" : this["VALOR_A_PAGAR"]
};
});
console.log(JSON.stringify(array));
$.ajax({
url: "ajaxAtualizar",
type: "POST",
dataType: "json",
data: JSON.stringify(array)
})
.done(function(data) {
var data = JSON.parse(data);
if (!data.salvou){
new PNotify({
icon: false,
text: '<h5>Registro não pôde ser gravado!<h5>',
type: 'error'
});
return;
}
$(".modal-estabelecimento").modal("toggle");
$("#mensagem-ajax").html("<div class='" + (data.salvou ? "alert alert-secondary fade in" : "alert alert-warning fade in") + "'><button type='button' class='close' data-dismiss='alert' aria-hidden='true'>X</button>" + data.mensagem + "</div>");
})
.fail( function(data) {
console.log("FALHOU");
console.log(data);
return;
});
});
public function ajaxAtualizar() {
$this->layout = "ajax";
$this->autoRender = false;
if ($this->request->is("ajax")) {
foreach ($this->request->data as $dados) {
$dados["desconto_cnes"] = str_replace(",", ".", str_replace(".", "", $dados["desconto_cnes"]));
$dados["desconto_rubrica"] = str_replace(",", ".", str_replace(".", "", $dados["desconto_rubrica"]));
$dados["valor_pago"] = str_replace(",", ".", str_replace(".", "", $dados["valor_pago"]));
$existeId = $this->Pagamento->findBySiaId($dados["sia_id"]);
if ($existeId) {
$dados["id"] = $existeId["PagamentoAmbulatoriai"]["id"];
}
}
if ($this->Pagamento->saveAll($dados)) {
return json_encode(array("salvou" => true, "mensagem" => $this->Mensagem->Msgi(7)));
} else {
return json_encode(array("salvou" => false, "mensagem" => $this->Mensagem->Msgi(6)));
}
}
}
$(“#模态btn salvar descon”)。在(“单击”,函数(){
var dadosTabela=$(“#tabela estabelecimento”).bootstrapTable(“getData”);
var数组=[];
$(dadosTabela).each(函数(索引){
数组[索引]={
“SIA_ID”:这个.ID,
“描述”:$(“#模态值描述”).val()。替换(“R$”,“”),
“VALOR_PAGO”:这个[“VALOR_A_PAGAR”]
};
});
log(JSON.stringify(array));
$.ajax({
网址:“ajaxAtualizar”,
类型:“POST”,
数据类型:“json”,
数据:JSON.stringify(数组)
})
.done(函数(数据){
var data=JSON.parse(数据);
如果(!data.salvou){
新通知({
图标:false,
案文:“格拉瓦多登记处”,
键入:“错误”
});
返回;
}
$(“.modal estabelecimento”).modal(“切换”);
$(“#mensageajax”).html(“X”+data.mensagem+”);
})
.失败(功能(数据){
控制台日志(“FALHOU”);
控制台日志(数据);
返回;
});
});
公共职能ajaxAtualizar(){
$this->layout=“ajax”;
$this->autoRender=false;
如果($this->request->is(“ajax”){
foreach($this->request->data as$dados){
$dados[“说明”]=str_替换(“,”,“,”,str_替换(“,”,“,$dados[“说明”]);
$dados[“Descon_rubrica”]=str_replace(“,”,“,”,str_replace(“,”,”,$dados[“Descon_rubrica”]);
$dados[“valor_pago”]=str_replace(“,”,“,”,str_replace(“,”,”,$dados[“valor_pago”);
$existeId=$this->Pagamento->findbysaid($dados[“sia_id”);
如果($existeId){
$dados[“id”]=$existeId[“PagamentoAmbulatoriai”][“id”];
}
}
如果($this->Pagamento->saveAll($dados)){
返回json_encode(数组(“salvou”=>true,“mensagem”=>this->mensagem->Msgi(7));
}否则{
返回json_encode(数组(“salvou”=>false,“mensagem”=>this->mensagem->Msgi(6));
}
}
}
在两天多的压力下,一位朋友补充道
contentType: 'application/json',
到ajax选项,一切都开始工作了。现在,我的php控制器看到ajax正在发送什么(没有发生什么)
我得到并解决的另一个错误是,我用ajax发送的数组的索引需要使用小写,否则cakephp将无法用saveAll保存
虽然一切正常,但我仍然不知道为什么我需要使用这个contentType,因为数据类型已经是json了。《好友代码》中的许多请求甚至没有这个选项,而且都有效……在两天多的时间里,一位朋友补充道
contentType: 'application/json',
到ajax选项,一切都开始工作了。现在,我的php控制器看到ajax正在发送什么(没有发生什么)
我得到并解决的另一个错误是,我用ajax发送的数组的索引需要使用小写,否则cakephp将无法用saveAll保存
虽然一切正常,但我仍然不知道为什么我需要使用这个contentType,因为数据类型已经是json了。《好友代码》中的许多请求甚至都没有这个选项,可以正常工作……为了更好地理解,我删除了你的一些代码 问题:
- 不要
数组,因为它会将其转换为字符串,并且不再作为数组发布。之后,您必须定义一个键,在该键中发送post值,这样做就像JSON.stringify
data:{myData:array}
- 不需要
和$this->layout=“ajax”
$this->autoRender=false代码>当我们请求json数据类型时,它将为我们提供json数据。我们必须像这样设置数据
$this->set($dataToSend)$此->设置(“序列化”,true)代码>
$(document).ready(function(){
$.ajax({
url: "ajaxAtualizar",
type: "POST",
dataType: "json",
data: {myData:array} // Put a key
})
.done(function(data) {
console.log(data);
})
.fail( function(jqXHR, textStatus, errorThrown) { // Change
console.log("FALHOU");
console.log(jqXHR.responseText); // Change
return;
});
});
public function ajaxAtualizar() {
$dataToSend = [];
if ($this->request->is("ajax")) {
if ($this->request->data('myData')) {
$dataToSend = array("salvou" => true, "mensagem" => 'Found');
} else {
$dataToSend = array("salvou" => false, "mensagem" => 'Problem');
}
}
$this->set($dataToSend);
$this->set('_serialize', true);
}
为了更好地理解,我删除了您的一些代码 问题:
- 不要
数组,因为它会将其转换为字符串,并且不再作为数组发布。之后,您必须定义一个键,在该键中发送post值,这样做就像JSON.stringify
data:{myData:array}
- 不需要
和$this->layout=“ajax”
$this->autoRender=false代码>当我们请求json数据类型时,它将为我们提供json数据。我们必须像这样设置数据
$this->set($dataToSend)$此->设置(“序列化”,true)代码>
$(document).ready(function(){
$.ajax({
url: "ajaxAtualizar",
type: "POST",
dataType: "json",
data: {myData:array} // Put a key
})
.done(function(data) {
console.log(data);
})
.fail( function(jqXHR, textStatus, errorThrown) { // Change
console.log("FALHOU");
console.log(jqXHR.responseText); // Change
return;
});
});
public function ajaxAtualizar() {
$dataToSend = [];
if ($this->request->is("ajax")) {
if ($this->request->data('myData')) {
$dataToSend = array("salvou" => true, "mensagem" => 'Found');
} else {
$dataToSend = array("salvou" => false, "mensagem" => 'Problem');
}
}
$this->set($dataToSend);
$this->set('_serialize', true);
}
JSON.stringify(array)
看起来像?@AmanRawat[{“SIA_ID”:“1070”,“descon_CNES”:“100,00”,“VALOR_PAGO”:“679,19”}]JSON.stringify(array)
看起来像?@AmanRawat[{“SIA_ID”:“1070”,“descon_CNES”:“100,00”,“VALOR_PAGO”:“679,19”}]谢谢,这也行得通。那么,我什么时候应该使用JSON.stringify呢?检查一下,它已经做了同样的错误,现在它在数据库中工作和保存,我的问题是响应,它总是转到.fail$此->autoRender=false是因为没有view@DiegoCarjan对代码进行了更改。检查f