我知道已经多次回答了这个问题(参见例如this post),并且尝试了我在SO和wlsewhere上看到的所有建议的解决方案,有用。
我尝试使用jquery ajax提交表单而不是对页面进行编码。我不是使用JavaScript,但认为找出如何做到这一点是值得的。该页面已经有jquery,并且尝试使用JavaScript(而不是jquery)处理一个帖子表单会产生错误500,所以我决定找出一个jquery解决方案。
一切正常。除了我不能用ajax返回正确的php错误。 问题可能是处理请求服务器端的php代码在同一页面上,所以我不能添加json数据类型并且必须转到html。我试图将所有内容放在一个单独的脚本中,但我似乎无法使其工作。
代码:
//this happens after the dom is loaded if the form is clicked.
$.ajax({
url: '', // form action url is the same
type: 'POST',
dataType: 'html', //json gives error anyhow
data: $(this).serialize(),
beforeSend: function() {
message.fadeOut();
submit.html('Sending...');
},
//here the problem starts: on success of the ajax call, how do I track the php being echoed?
success: function(x){
if(x == '1'){
//the submit button says error
submit.html('Error');
}else{
//the submit button goes back to normal
submit.html('Send');
}
},
error: function(e) {
//if there's an ajax problem just alert.
}
});
我在 php (同一页面)中的内容是这样的(以下内容不是真正的代码,只是一个随机的例子):< / p>
if( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ){
$foo = $_POST["foo"];
if(empty($foo)){
$error ="1";
echo $error;
} //if not show no error etc etc etc
}
即使$ foo为空,也会发生错误消息。
我尝试将echo json_encode (array( //etc )); exit;
和datatype:'json',
移动到另一个文件中,但仍然无法正确显示错误。
总而言之,我认为我没有尝试过任何事情。任何有关如何解决这个问题的提示都将受到高度赞赏。我当然不是一名JavaScript专家,并且已经在这方面坚持了一段时间。