【发布时间】:2015-09-25 05:33:47
【问题描述】:
我在我的CMS 应用程序中广泛使用了.post()。下面的工作代码示例将 13 个(在我的应用程序中最多)参数传递给运行良好的 processing.php 文件。
当需要传递更多参数时,我只需使用action 表单属性,它也可以正常工作。
但是,我有一个应用程序需要传递 38 个变量,包括大字符串,但同时对 action file 执行检查,如果检查失败,我需要触发 js confirmation alert 到继续或取消。
我不太确定如何从processing.php 文件中触发js confirmation alert,以及如何在用户取消时返回原始文件并完整地输入表单中的信息。
但是,如果我使用 .post(),我确实知道如何完成此操作。
我的问题是:
如下所述,应该发送到processing.php 到.post() 的参数数量是否有任何限制,或者我应该采取另一种方法来处理上述问题?如果是这样,您有什么建议?
工作代码示例
// code element
$( "#updateDefaultCodeButton" ).click(function(){
var url = $('#updateDefaultCodeURL').val();
var code_font_family = $('#code_font_family').val();
var code_font_color = $('#code_font_color').val();
var code_font_weight = $('#code_font_weight').val();
var code_font_size = $('#code_font_size').val();
var code_bg_color = $('#code_bg_color').val();
var code_pad_t = $('#code_pad_t').val();
var code_pad_r = $('#code_pad_r').val();
var code_pad_b = $('#code_pad_b').val();
var code_pad_l = $('#code_pad_l').val();
var code_w_pad_t = $('#code_w_pad_t').val();
var code_w_pad_r = $('#code_w_pad_r').val();
var code_w_pad_b = $('#code_w_pad_b').val();
var code_w_pad_l = $('#code_w_pad_l').val();
var postit = $.post( url, {
code_font_family:code_font_family,
code_font_color:code_font_color,
code_font_weight:code_font_weight,
code_font_size:code_font_size,
code_bg_color:code_bg_color,
code_pad_t:code_pad_t,
code_pad_r:code_pad_r,
code_pad_b:code_pad_b,
code_pad_l:code_pad_l,
code_w_pad_t:code_w_pad_t,
code_w_pad_r:code_w_pad_r,
code_w_pad_b:code_w_pad_b,
code_w_pad_l:code_w_pad_l
});
postit.done(function( data ) {window.location.replace("../generator.php?returnto=manage/global-styles-manage.php");});
});
【问题讨论】:
-
附带说明,您最好序列化 FORM,而不是手动构造要发布的数据:api.jquery.com/serialize
-
同意@A.Wolff。或者至少丢失所有变量声明并直接在发布数据对象中获取值,即
{ code_font_family: $('#code_font_family').val(), ... } -
@A.Wolff 感谢您的意见。这回答了有关执行任务的更好方法的问题......把它放在一个答案中,我会给你检查
-
@petebolduc @A.Wolff 的评论是非常好的建议,但绝对不是您问题的合适答案。无论您是否使用
.serialize,您仍然会向您的服务器发送相同数量的数据。 -
@Andy 感谢您提供的其他信息
标签: javascript php jquery