我认为这很容易,但我不确定正确的语法是什么。我通过JQuery ajax发布表单 - 你知道
$j.ajax({
type: "post", etc.....
但是如果禁用Java,我需要确保表单能够被处理。是否在ajax发送中有一个“标题”,可用于将其标识为普通帖子,以便在完成时是否可以返回发送页面的ajaxed或普通的php帖子。如果没有ajaxed我可以使用if($update): header('location: ...'); endif;
但是如果我使用它与ajax请求它会停止ajax成功函数。希望有所作为
答案 0 :(得分:1)
是的,jQuery在执行AJAX请求时设置自定义标头:
X-Requested-With : XMLHttpRequest
编辑russp的服务器端PHP代码:
define('IS_AJAX_REQUEST', isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
if( IS_AJAX_REQUEST )
{ //This is an AJAX request, do AJAX specific stuff }
else
{ //This is not an AJAX request }
答案 1 :(得分:0)
不要真正了解标题,但是更简单的解决方案是在ajax上下文中执行此操作时,只需使用额外的参数调用处理页面的url?
然后,页面可以简单地检查参数是否存在,并根据它采取适当的操作。
答案 2 :(得分:0)
您需要做很多事情或者解决这些问题,但是您可以结合使用<noscript>
和javascript代码来获取所需内容。
请参阅WWW FAQs: How do I detect JavaScript in the user's browser?
希望能帮助您入门。
答案 3 :(得分:0)
处理ajax表单请求的常用方法是将表单编写为没有任何类型的JS工作,所以如果你在一个基本的php文件中,你将从
开始<?php
if(count($_POST) > 0) {
//process form entries
} else {
//output form
}
?>
然后你会添加一些jQuery来劫持提交点击所以
$('input[type=submit]').live("click", function(e) {
e.preventDefault();
//ajax post here
//IE
return false;
});