【发布时间】:2013-12-17 07:20:15
【问题描述】:
这是最奇怪的事情,只有从我的客户的实际位置才会发生这种情况。我正在使用 $.get jQuery 函数对单个较大表单中的三个表单部分执行服务器端验证。在每个部分之后,$.get 都会调用 PHP 验证脚本。只有在客户端物理站点,脚本才会在第三次也是最后一次验证调用中返回 403 错误 - 前两个过程正常。我还可以使用各种浏览器 IE8+、Chrome、FF、Windows、Mac 从其他位置运行整个表单,没有任何问题。
我没有固定它,但我有一种预感,这与站点内部域类似于外部域有关,除了 .local 用于本地和 .com 用于外部。我在调用 $.get 时使用了 FQDN,但仍然出现错误。
我已将问题隔离为传递给 $.get 的数组变量 - 这对我来说毫无意义,我已尝试更改变量中的所有值甚至变量名称等。
*services_explain_array* 数组是在添加到 *finish_array* 时导致问题的原因,如果忽略,一切都按预期工作。
更新
在 FF 上检查网络调试时,第三个也是最后一个 $.get 调用从未知服务器“GoAhead WebServer”返回,而不是我的实际 Web 服务器“Apache”
//SET OTHER SERVICES REQUIREMENTS
var services_other_required;
if ($('#otherservices').prop('checked') === true) {
services_other_required = 'required';
} else {
services_other_required = '';
}
//CREATE ELEMENT ARRAYS
//GET ALL SERVICES INPUT ELEMENTS THAT ARE CHECKED AND ADD THEM TO AN ARRAY
var services_checked_array = [];
$("#services_method input").each(function (index, value) {
if ($(this).prop('checked') === true) {
services_checked_array.push($(this).data("display"));
}
});
//CONVERT INPUT ELEMENTS FROM ARRAY TO STRING TO BE VALIDATED
var services_val = services_checked_array.join(', ');
//CREATE ELEMENT ARRAYS
var services_array = new Array('services', services_val, 'alphnum', 'required');
var services_explain_array = new Array('servicesexp', $('#servicesexp').val(), 'alphnum', services_other_required);
var delivery_array = new Array('delivery', $('#delivery').val(), 'word', 'required');
var additional_array = new Array('additional', $('#additional').val(), 'alphnum');
//CREATE SECTION ARRAY
var finish_array = new Array(services_array, delivery_array, additional_array);
validate(finish_array, 'finish', 'summary');
function validate(validation_array, current_section, next_section){
$.get("order/validate.php", {'input_array' : validation_array},
function(data){ /** LOTS'o'Stuff HERE **/ }, 'JSON'); }
【问题讨论】:
-
403被禁止。检查权限。当您尝试手动调用 PHP 验证脚本时会得到什么。 -
是的 - 我认为这不是权限问题。如果是,为什么它在 95% 的时间里都有效?为什么将这个 jQuery 数组添加到 $.get 数据导致它返回这个?我在描述中添加了更多细节,还有更多信息可能会有所帮助
-
你如何使用
$.get的数组? -
添加了第二个代码 sn-p - 它永远不会进入函数(数据),在制作 $.get 时会死
-
我认为你需要
JSON.stringify(validation_array)。$.get数据可以是A plain object or string
标签: javascript php jquery ajax arrays