编辑:我将 post 方法更改为 get 方法,一切都按预期工作。我会进一步调查,如果我弄清楚为什么会这样,我会添加答案。我确实在其他地方使用帖子,所以我们会看到...
我已经四处寻找这个问题的答案,到目前为止还没有找到任何有帮助的东西。我有一个简单的表单,它使用 jquery 的 .submit 函数来序列化数据并通过 ajax 将其发布到 php 脚本中。这一切都在我的本地主机上运行良好,但是一旦我将其发布到服务器,字段值就不会发布。
这是表格:
<div id="loginDiv">
<form id="login" class="form-inline pull-right">
<input id="loginVal" name="loginVal" type="password" class="input-small" />
<button type="submit" class="btn btn-success">Log In</button>
</form>
</div>
下面是提交函数和成功回调函数:
// ajax function to login to session
$(document).ready(function() {
$("#login").submit(function() {
$.post(
"functions/sessionLogin.php",
$("#login").serialize(),
//{"loginVal":"CHAPMANADMIN"}, (this was just to troubleshoot)
function(json) {
parseReturnedLogin(json);
}
);
return false;
});
});
// login success handler
function parseReturnedLogin(data) {
var obj = jQuery.parseJSON(data);
$("#loginDiv").html("<p class='"navbar-text pull-right'">Logged in as <span
style='"color:#0088cc'">"+obj.priveleges+"</span></p>");
}
这是我在本地主机上得到的一些标头和响应的示例:
请求方式:开机自检 状态码:200 OK
接受:/
X-Request-with:XMLHttpRequest
表单数据:登录Val:CHAPMANADMIN
响应: {"user":"CHAPMANADMIN","priveleges":"Administrator","sessid":"pvigqmcfumlbiu13esiojg1n74"}
这是我在服务器上得到的一些标头和响应的示例:
请求方式:开机自检 状态码:200 OK
接受:/
X-Request-with:XMLHttpRequest
表单数据:登录Val:CHAPMANADMIN
响应: {"user":","priveleges":","sessid":"o2nf69vc2tdd8hc8n0usas4010"}
实时服务器上的查询正在使用空值运行。我在同一台服务器上还有其他 AJAX 应用程序,它们在类似的设置下可以正常工作,所以我不确定发生了什么,并希望专家提供一些建议/故障排除指导!
您的表单工作正常,但响应不正确。检查服务器上的服务器监控功能以及正常工作的数据库连接!
发布脚本以供进一步调查。
为了调试这些情况,我使用带有火虫扩展检查请求/响应的火狐。
最终成为在我的 $_POST 变量上使用 mysql_real_escape_string 的问题。我将代码从 mysql 转换为 PDO 函数,但没有删除需要 mysql 连接才能工作的mysql_real_escape_string函数,否则它们返回 false。
当我将此代码发布到服务器时,没有活动的 mysql 连接,因此该函数返回 false 并将我的变量值设置为 false。
希望这可以帮助将来有人摆脱同样的愚蠢错误。