【发布时间】:2011-04-14 05:05:43
【问题描述】:
我现在正在为一个简单的喊话框编写脚本。我之前使用 $.get() 没有任何问题。然后我切换到 $.post() 这样我就可以将西里尔字符传递给 php。
我已将所有内容切换为已在 javascript 和 php 文件中发布。 Firebug 显示变量不是空的并且正在发送,它们是来自 php 脚本的标准响应,但不是正确的响应。我尝试打印整个 $_POST 变量范围,但只给出了一个空数组。我究竟做错了什么?
$.post('file.php', { sc_com:'submit', name:userboxVal, color:swatch, msg:escape(msgboxVal) }, function(data) {
if(data.error) {
msgbox.focus();
shoutError(data.error);
} else if(data.status=='posted') {
msgbox.val('').focus();
refreshShouts(opts,'ajax');
}
}, 'json');
PHP
$sc_com = strip_tags($_POST['sc_com']); // Empty
print_r($_POST); // returns Array()
不确定为什么需要 PHP 代码?整件事超过500行,但这是最重要的部分......
【问题讨论】:
-
仅发送非西里尔字符时是否也会出现问题?您还可以发布您在 Firebug 中看到的发送数据吗?
-
同意马修的观点:这并不能告诉我们整个故事。如果您的 PHP 代码超过
print_r($_POST),那么问题一定出在其中,因为 jQuery 看起来还不错。 -
PHP 代码超过 500 行,包含一个自定义类。不管是 1 行还是 6,000 行,我在主帖中包含的部分位于脚本的顶部,文件的响应是 Array()。 Firebug 说 200 OK 并显示每个变量及其正在发送的值。响应显示变量为空...
-
您是否在 firebug NET 选项卡中跟踪它?它显示了什么?
-
简化为一个更简单的示例。如果你做
$.post('file.php', { test: 'test value' }),它会起作用吗?如果添加'json'参数呢;这会破坏它吗?添加西里尔字符怎么样?如果即使是第一次中断,我会认为这是与服务器配置相关的 PHP 问题——也许是某种过分热心的安全设置。