- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用ajax发送带有序列化表单数据的对象数组。当我发送序列化数据并将数组添加到 ajax 数据时,问题就出现了。序列化的表单数据不会以正确的格式到达 Controller 。这是我的 ajax:
$('body').on('submit','#RequestPakagesTempAddForm', function(e){
if (!(productArray.length > 0) || jQuery.isEmptyObject(productArray) ) {
alert("Falta agregar productos");
return false;
}
form = $("#RequestPakagesTempAddForm").serialize();
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: {
'formData': form,
'productArray': productArray
},
success: function(data){
/*$('.modal').modal('hide');
$(".success").fadeIn(500).delay(2000).fadeOut(500);*/
$("#RequestPakagesTempAddForm")[0].reset();
//Unterminated String constant fixed
alert("hola");
}
});
event.preventDefault();
return false; //stop the actual form post !important!
});
productArray 是我创建的要在表单数据中发送的数组。 Controller 上的数组格式是正确的,但序列化的表单数据返回一些奇怪的东西。这是 $this->request->data
返回的内容:
Array
(
[formData] => _method=POST&data%5BRequestPakagesTemp%5D%5Bidentity_id%5D=10&data%5BAddress%5D%5Bexterior_number%5D=22&data%5BAddress%5D%5Binternal_number%5D=0&data%5BAddress%5D%5Bstreet%5D=a&data%5BAddress%5D%5Bsuburby%5D=a&data%5BRequestPakagesTemp%5D%5Btogether%5D=0&data%5BAddress%5D%5Bcountry_id%5D=1&data%5BAddress%5D%5Bstate_id%5D=19&data%5BAddress%5D%5Bcity_id%5D=993&data%5BRequestPakagesTemp%5D%5Bproducts_array%5D=
[productArray] => Array
(
[0] => Array
(
[product_name] => a
[product_number] => a
[category_name] => a
[brand_name] => a
[quantity] => a
[description] => a
)
)
)
我希望表单数据作为我发送的数组发送。我的猜测是我在 ajax 中序列化数据的某个地方搞砸了。感谢您提前提供的帮助:D
我提交的表单就是这个
<?php
echo "<div class='row'>";
echo "<div class='col-lg-4'>";
echo '<div class="styled-select">';
echo $this->Form->input('identity_id', array('empty' => 'Elige la Identidad', 'label' => false, 'placeholder' => 'Identidad', 'class' => 'txtBoxRegister'));
echo '</div>';
echo "</div>";
echo "<div class='col-lg-4'>";
echo $this->Form->input('Address.exterior_number', array( 'label' => false, 'placeholder' => 'Numero Exterior', 'class' => 'txtBoxRegister'));
echo "</div>";
echo "<div class='col-lg-4'>";
echo $this->Form->input('Address.internal_number', array( 'label' => false, 'required' => false, 'placeholder' => 'Número Interior', 'class' => 'txtBoxRegister'));
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-lg-4'>";
echo $this->Form->input('Address.street', array( 'label' => false, 'placeholder' => 'Calle', 'class' => 'txtBoxRegister'));
echo "</div>";
echo "<div class='col-lg-4'>";
echo $this->Form->input('Address.suburby', array( 'label' => false, 'placeholder' => 'Colonia', 'class' => 'txtBoxRegister'));
echo "</div>";
echo "<div class='col-lg-4'>";
echo "<div data-toggle='tooltip' data-placement='right' title='Tooltip on right'>";
echo $this->Form->input('together', array('label' => 'Todo Junto', 'class' => 'squaredTwo'));
echo "</div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-lg-4'>";
echo '<div class="styled-select">';
echo $this->Form->input('Address.country_id', array('required' => true, 'empty' => '', 'label' => false, 'class' => 'txtBoxRegister'));
echo '</div>';
echo "</div>";
echo "<div class='col-lg-4'>";
echo '<div class="styled-select">';
echo $this->Form->input('Address.state_id', array('required' => true, 'empty' => '', 'label' => false, 'class' => 'txtBoxRegister'));
echo '</div>';
echo "</div>";
echo "<div class='col-lg-4'>";
echo '<div class="styled-select">';
echo $this->Form->input('Address.city_id', array('required' => true, 'empty' => '', 'label' => false, 'class' => 'txtBoxRegister'));
echo '</div>';
echo "</div>";
echo "</div>";
echo $this->Form->input('products_array', array('type' => 'hidden', 'id' => 'product_array'));
?>
productArray 是一种表单,每次提交时我都会向 ProductArray 变量添加一个元素(对象)。这是表格:
<?php
echo '<div class="row">';
echo '<div class="col-lg-12" style = "text-align:center;">';
echo $this->Form->input('product_name', array( 'label' => false,'required' => true, 'placeholder' => 'Nombre del Producto', 'class' => 'txtBoxRegister'));
echo $this->Form->input('product_number', array( 'label' => false, 'required' => false, 'placeholder' => 'Numero del Producto', 'class' => 'txtBoxRegister'));
echo $this->Form->input('brand_name', array( 'label' => false, 'required' => true, 'placeholder' => 'Nombre de la Marca', 'class' => 'txtBoxRegister'));
echo $this->Form->input('category_name', array( 'label' => false, 'required' => true, 'placeholder' => 'Nombre de la Cateogria', 'class' => 'txtBoxRegister'));
echo $this->Form->input('quantity', array( 'label' => false, 'required' => true, 'placeholder' => 'Cantidad del Producto (ejemp. 17 gramos)', 'class' => 'txtBoxRegister', 'id' => 'product_quantity'));
echo $this->Form->input('description', array( 'label' => false, 'required' => true, 'placeholder' => 'Descripción', 'class' => 'txtBoxRegister', 'type' => 'textarea', 'style' => 'height: 150px;', 'id' => 'product_description'));
echo '</div>';
echo '</div>';
?>
这是我将元素添加到数组的 js。
$("#productForm").submit(function( event ) {
//console.log(productArray);
$('#productBodyTable').append('<tr class="productRow" id="' + $("#product_number").val() +'"> <td class="countId">' + count + '</td> <td>' + $("#product_name").val() + '/' + $("#product_number").val() +'</td> <td>' + $("#brand_name").val() + '</td> <td>' + $("#product_description").val() + '</td> <td>' + $("#product_quantity").val() + '</td> <td> <button type="button" class="btn btn-danger delProduct" id="' + $("#product_number").val() + '" value = "' + countP + '"> <b>-</b> </button> </td> </tr>');
event.preventDefault();
var product = { 'product_name': $("#product_name").val(), 'product_number': $("#product_number").val(), 'category_name': $("#category_name").val(), brand_name: $("#brand_name").val(), 'quantity': $("#product_quantity").val(), description: $("#product_description").val()};
//console.log(product);
productArray[countP] = product;
//console.log(productArray);
count = count + 1;
countP = countP + 1;
$('#createIdentityModal').modal('hide');
$('#createIdentityModal').find('form')[0].reset();
$(".delProduct").click(function() {
delete productArray[$(this).val()];
$(this).parent().parent().remove();
//console.log(productArray);
restartCounter();
});
});
顺便说一句,productArray 是一个全局值。
最佳答案
好的,我发现了序列化表单的问题。该方法正在做它应该做的事情。我只是没有在 Controller 端给出它的格式。所以我发现在 Controller 中使用它:
$FormOne = $this->request->data['formData'];
$FormOneValues = array();
parse_str($FormOne, $FormOneValues);
$this->request->data['formData'] = $FormOneValues['data'];
我可以为我获得的表单数据提供我想要的格式。我不明白序列化方法的作用。通过使用 parse_str()
我可以添加具有我需要的格式的表单数据。如果有一种更简单的方法可以从 View 方面做到这一点,我仍然想听听。我仍在学习使用 CakePhp。希望这对将来的人有帮助。
关于javascript - CakePhp 使用 Ajax 提交 - 表单序列化不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28748018/
我是 python 的新手。我试图找到我的文本的频率分布。这是代码, import nltk nltk.download() import os os.getcwd() text_file=open(
我对安卓 fragment 感到困惑。我知道内存 fragment 但无法理解什么是 android fragment 问题。虽然我发现很多定义,比如 Android fragmentation re
尝试对 WordPress 进行 dockerise 我发现了这个场景: 2个数据卷容器,一个用于数据库(bbdd),另一个用于wordpress文件(wordpress): sudo docker
这个问题已经有答案了: From the server is there a way to know that my page is being loaded in an Iframe (1 个回答)
我正在玩小型服务器,试图对运行在其上的服务进行docker化。为简化起见,假设我必须主要处理:Wordpress和另一项服务。 在Docker集线器上有许多用于Wordpress的图像,但是它们似乎都
我想要发生的是,当帐户成功创建后,提交的表单应该消失,并且应该出现一条消息(取决于注册的状态)。 如果成功,他们应该会看到一个简单的“谢谢。请检查您的电子邮件。” 如果不是,那么他们应该会看到一条适当
就是这样,我需要为客户添加一个唯一标识符。通过 strip 元数据。这就是我现在完全构建它的方式,但是我只有最后一部分告诉我用户购买了哪个包。 我试着看这里: Plans to stripe 代码在这
我有一个类将执行一些复杂的操作,涉及像这样的一些计算: public class ComplexAction { public void someAction(String parameter
这个问题已经有答案了: maven add a local classes directory to module's classpath (1 个回答) 已关闭10 年前。 我有一些不应更改的旧 E
我使用 fragment 已经有一段时间了,但我经常遇到一个让我烦恼的问题。 fragment 有时会相互吸引。现在,我设法为此隔离了一个用例,它是这样的: Add fragment A(也使用 ad
我的 html 中有一个 ol 列表,上面有行条纹。看起来行条纹是从数字后面开始的。有没有办法让行条纹从数字开始? 我已经包含了正在发生的事情的片段 h4:nth-child(even) {
如何仅使用 css 将附加图像 html 化? 如果用纯 css 做不到,那我怎么能至少用一个图像来做 最佳答案 这不是真正的问题,而是您希望我们为您编写代码。我建议您搜索“css breadcrum
以下是 Joshua 的 Effective Java 的摘录: If you do synchronize your class internally, you can use various te
在这里工作时,我们有一个框向业务合作伙伴提供 XML 提要。对我们的提要的请求是通过指定查询字符串参数和值来定制的。其中一些参数是必需的,但很多不是。 例如,我们要求所有请求都指定一个 GUID 来标
我有 3 个缓冲区,其中包含在 32 位处理器上运行的 R、G、B 位数据。 我需要按以下方式组合三个字节: R[0] = 0b r1r2r3r4r5r6r7r8 G[0] = 0b g1g2g3g4
我最近发现了关于如何使用 History.js、jQuery 和 ScrollTo 通过 HTML5 History API 对网站进行 Ajax 化的要点:https://github.com/br
我们有一个 Spring Boot 应用程序,由于集成需要,它变得越来越复杂——比如在你这样做之后发送一封电子邮件,或者在你之后广播一条 jms 消息等等。在寻找一些更高级别的抽象时,我遇到了 apa
我正在尝试首次实施Google Pay。我面临如何指定gateway和gatewayMarchantId的挑战。 我所拥有的是google console帐户,不知道在哪里可以找到此信息。 priva
昨天下午 3 点左右,我为两个想要从一个 Azure 帐户转移到另一个帐户的网站设置了 awverify 记录。到当天结束时,Azure 仍然不允许我添加域,所以我赌了一把,将域和 www 子域重新指
我正在使用terms facet在elasticsearch服务器中获取顶级terms。现在,我的标签"indian-government"不被视为一个标签。将其视为"indian" "governm
我是一名优秀的程序员,十分优秀!