我想知道是否可以设置我的脚本,以便可以通过http ajax调用处理,也可以通过经典的帖子方式处理:
在顶部我首先这样做:
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
$AnswerType = 'die';
}
if ($_SERVER['REQUEST_METHOD'] === 'POST'){
$AnswerType = 'session';
}
然后我通过执行以下操作检查是否设置了这两个中的任何一个:
if ($AnswerType == 'die' || $AnswerType == 'session' ){
*here i run my script*
}
当脚本结束时,我终于尝试将我的$ respond_message数组中的所有响应发送回initialy发布的表单的方式:
if ($AnswerType = 'die'){
die(print_r($respond_message));
}
if ($AnswerType = 'session'){
$_SESSION['formrespondmessage'].= print_r($respond_message);
header("Location: /");
}
答案 0 :(得分:1)
您希望脚本在ajax和简单的帖子请求上做出不同的反应吗?我认为在这种情况下,最好的解决方案就是传递任何变量,这表明数据是由ajax发送的。像这样:
postparams [' AJAX'] = 1; $ .POST(...
然后在php中进行检查:
if(isset($ _ POST [' ajax'])){ ajax请求的代码 } else { 简单邮寄请求的代码 }
答案 1 :(得分:1)
不确定你的代码,我不想使用如此复杂的脚本,至少你需要在serializeArray之后添加(),可能其他一切看起来都不错。我会这样做:
<form name="form1" id="form1">
<input type="text" name="qq" value="ww">
</form>
<input type="button" onclick="dt=$('#form1').serializeArray();dt[dt.length]={name: 'ajax', 'value': 1};$.post('test.php', dt, function(data) {alert(data)});">
在php文件中只检查isset($ _ POST [“ajax”])。例如,我看起来像这样:
<?
if (isset($_POST["ajax"])) print_r($_POST);
?>