用于ajax和post调用的settup表单脚本

时间:2015-06-06 08:04:35

标签: php ajax session

我想知道是否可以设置我的脚本,以便可以通过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: /");
    }

2 个答案:

答案 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);
?>