Php Ajax post请求只有在浏览器关闭并再次打开后才能通过
很长一段时间以来,我一直在使用AJAX、JQuery和Sessions。但这是我第一次遇到这个问题 我将一个普通的post请求发送到另一个页面,就像我以前的代码一样,我使用目标页面中的会话来测试我的AJAX请求是否成功 在我这么做的所有时间里,它都工作得很好,当然,除了有一些明显的Javascript错误阻止我的AJAX成功进行之外 现在发生的事情是,为了使ajax请求成功,我需要在关闭并重新打开浏览器后触发它,如果我在发送第一个请求后再次触发它,它将不再成功进行,另一件有趣的事情是,当我为ajax启用错误响应时,我总是会出错,这真的很烦人,因为我无法确定这个问题的根本原因 这是服务器问题、代码问题还是我不知道的规则 我的代码不包括JS:Php Ajax post请求只有在浏览器关闭并再次打开后才能通过,php,jquery,ajax,session,Php,Jquery,Ajax,Session,很长一段时间以来,我一直在使用AJAX、JQuery和Sessions。但这是我第一次遇到这个问题 我将一个普通的post请求发送到另一个页面,就像我以前的代码一样,我使用目标页面中的会话来测试我的AJAX请求是否成功 在我这么做的所有时间里,它都工作得很好,当然,除了有一些明显的Javascript错误阻止我的AJAX成功进行之外 现在发生的事情是,为了使ajax请求成功,我需要在关闭并重新打开浏览器后触发它,如果我在发送第一个请求后再次触发它,它将不再成功进行,另一件有趣的事情是,当我为aj
<style type="text/css">
.input-select { width: 200px; }
.bordered-table { border-collapse:collapse; margin:5px; }
.bordered-table td { border:1px solid #ccc; padding:4px; }
</style>
<link href="/admin/shop/css/tabs.css" type="text/css" rel="stylesheet" media="screen" />
<link href='http://fonts.googleapis.com/css?family=Raleway:400,500,700,800' rel='stylesheet' type='text/css'>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(function() {
$(".tab_content").hide();
$("ul.tabs").each(function () {
$(this).find('li:first').addClass("current");
$(this).next('.panes').find('.tab_content:first').show();
});
/* binding click to display another tab */
$("ul.tabs li a").click(function(event) {
var cTab = $(this).closest('li');
cTab.siblings('li').removeClass("current");
cTab.addClass("current");
cTab.closest('ul.tabs').nextAll('.panes:first').find('.tab_content').hide();
var activeTab = $(this).attr("href"); //Find the href attribute value to identify the active tab + content
$(activeTab).fadeIn(); //Fade in the active ID content
return false;
});
});
function checkIt(evt) {
evt = (evt) ? evt : window.event
var charCode = (evt.which) ? evt.which : evt.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
status = "This field accepts numbers only."
return false
}
status = ""
return true
}
function addRows(elem) {
var ctr = parseInt($("#rows_ctr").val())+parseInt(1);
var row = $(elem);
emails_dropdown = $("#email_id_sample").clone();
row.closest('.adder').parents(".adder-row").before('<tr><td><b>Subject</b>:</td><td><select name="email_id[]" id="email_id_'+ctr+'" style="width: 350px;margin-right: 5;">'+emails_dropdown.html()+'</select></td></tr>');
$("#rows_ctr").val(ctr);
// $("#email_id_"+ctr).val('');
}
function addForm() {
var ctr = parseInt($("#rows_ctr1").val())+parseInt(1);
form_content = $("#formcopy").clone();
$('#cform > tbody > tr:last').after('<tr><td><div id="crm-feedback'+ctr+'"></div><form id="form'+ctr+'" onsubmit="return setList('+ctr+');">'+form_content.html()+'<form/></td></tr>');
$("#rows_ctr1").val(ctr);
}
function setList(str){
var postDatas = decodeURI($('#form'+str+'').serialize());
console.log('Post data: ' + postDatas);
$.ajax({
url: base_url+"admin/page/file.php",
type: "POST",
cache: false,
data: postDatas,
beforeSend:function(){
$('#crm-feedback'+str+'').html('<center><img src="images/ajax-loader.gif"></center>');
},
success: function(data){
// $('#crm-feedback').html('Saved!').css('color','green');
console.log('Success');
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
}
</script>
<body class="colorbox-body">
<div class="welcome-box">
<h1>Set Group Email and SMS</h1>
</div>
<div class="colorbox-content">
<div id="notification">
<?php
if($email_success){
echo"<font style='color:green;'>Schedule Saved.</font>";
echo '<script>
setTimeout("$(\"#notification\").fadeOut()",5000);
</script>';
}
if($nochanges==1){
echo "<font style='color:red;'>No changes made.</font>";
echo '<script>
setTimeout("$(\"#notification\").fadeOut()",5000);
</script>';
}
?>
</div>
<h2>Set Group Email and SMS</h2>
<table id="cform">
<tr>
<td>
<form id = "form0" name="form0" onsubmit="return setList(0);">
<div class="sel">
<?php
$ctr = 0;
//get group emails
$sql_grpemails = "some things";
$res_grpemails = mysql_query($sql_grpemails);
if(mysql_num_rows($res_grpemails) > 0) {
while($row_grpemails = mysql_fetch_assoc($res_grpemails)) {
echo '<tr><td><b>Subject:</b></td>';
echo '<td><select name="email_id[]" id="email_id_'.$ctr.'" style="width: 350px;margin-right: 5;">
<optgroup label="Emails">
<option value="">-- Select --</option>';
$res_savedemails = mysql_query($sql_savedemails);
while($row_savedemails = mysql_fetch_assoc($res_savedemails)) {
echo '<option value="'.$row_savedemails['sam_msg_id'].'" '.($row_savedemails['sam_msg_id']==$row_grpemails['email_id']?'selected':'').'>'.$row_savedemails['sam_subject'].'(Email)</option>';
}
echo '
</optgroup>
<optgroup label="SMS">';
$res_savedsms = mysql_query($sql_savedsms);
while($row_savedsms = mysql_fetch_assoc($res_savedsms)) {
echo '<option value="'.$row_savedsms['id'].'-sms" '.($row_savedsms['id']==$row_grpemails['email_id']?'selected':'').'>'.$row_savedsms['subject'].'(SMS)</option>';
}
echo '
</optgroup>
</select></td></tr>';
$ctr++;
}
}
?>
<table cellpadding="3">
<tr>
<td>
<b>Subject:</b>
</td>
<td>
<select name="email_id[]" id="email_id_<?php echo $ctr;?>" style="width: 350px;margin-right: 5;">
<optgroup label="Emails">
<option value="">-- Select --</option>
<?php
$res_savedemails = mysql_query($sql_savedemails);
while($row_savedemails = mysql_fetch_assoc($res_savedemails)) {
echo '<option value="'.$row_savedemails['sam_msg_id'].'">'.$row_savedemails['sam_subject'].'</option>';
}
?>
</optgroup>
<optgroup label="SMS">
<?php
$res_savedsms = mysql_query($sql_savedsms);
while($row_savedsms = mysql_fetch_assoc($res_savedsms)) {
echo '<option value="'.$row_savedsms['id'].'-sms">'.$row_savedsms['subject'].'</option>';
}
?>
</optgroup>
</select>
</td>
</tr>
<tr class="adder-row">
<td colspan="2">
<input type="button" class="adder btn-link right" value="Add More" onclick="addRows(this);" />
</td>
</tr>
</table>
</div>
<br/>
<input type="hidden" name="rows_ctr" id="rows_ctr" value="<?php echo $ctr;?>" />
<input type="hidden" name="rows_ctr1" id="rows_ctr1" value="<?php echo $ctr;?>" />
<input type="hidden" name="gid" id="" value="<?php echo $_GET['gid'];?>" />
<input type="submit" value="Save" class="btn-link right" />
<div class="clr"></div>
</div>
</form>
</td>
</tr>
</table>
<table width="95%">
<tr>
<td colspan="2">
<input type="button" class="btn-link right" value="Add More" onclick="javascript:addForm();" />
</td>
</tr>
</table>
<select name="email_id_sample" id="email_id_sample" style="display:none;">
<optgroup label="Emails">
<option value="">-- Select --</option>
<?php
$res_savedemails = mysql_query($sql_savedemails);
while($row_savedemails = mysql_fetch_assoc($res_savedemails)) {
echo '<option value="'.$row_savedemails['sam_msg_id'].'">'.$row_savedemails['sam_subject'].'</option>';
}
?>
</optgroup>
<optgroup label="SMS">
<?php
$res_savedsms = mysql_query($sql_savedsms);
while($row_savedsms = mysql_fetch_assoc($res_savedsms)) {
echo '<option value="'.$row_savedsms['id'].'-sms">'.$row_savedsms['subject'].'</option>';
}
?>
</optgroup>
</select>
<form id = "formcopy" name="form1" method="post" action="" style="display:none">
<table cellpadding="3">
<tr>
<td>
<b>Subject:</b>
</td>
<td>
<select name="email_id[]" id="email_id_<?php echo $ctr;?>" style="width: 350px;margin-right: 5;">
<optgroup label="Emails">
<option value="">-- Select --</option>
<?php
$res_savedemails = mysql_query($sql_savedemails);
while($row_savedemails = mysql_fetch_assoc($res_savedemails)) {
echo '<option value="'.$row_savedemails['sam_msg_id'].'">'.$row_savedemails['sam_subject'].'</option>';
}
?>
</optgroup>
<optgroup label="SMS">
<?php
$res_savedsms = mysql_query($sql_savedsms);
while($row_savedsms = mysql_fetch_assoc($res_savedsms)) {
echo '<option value="'.$row_savedsms['id'].'-sms">'.$row_savedsms['subject'].'</option>';
}
?>
</optgroup>
</select>
</td>
</tr>
<tr class="adder-row">
<td colspan="2">
<input type="button" class="adder btn-link right" value="Add More" onclick="addRows(this);" />
</td>
</tr>
</table>
<div class="scheduled_days">
<p><b>Scheduled (Days)</b></p>
<br/>
<ul class="tabs">
<li><a href="#tab5">Days</a></li>
<li><a href="#tab6">Weekly</a></li>
<li><a href="#tab7">Monthly</a></li>
<li><a href="#tab8">Yearly</a></li>
</ul>
<div class="panes">
<div id="tab5" class="tab_content" style = "padding-top: 20px;">
<b>Recurring:</b> Every <input type="text" name="dval"/> Day(s)
<br/>
<small>*Reference date: Member date added to the group</small>
</div>
<div id="tab6" class="tab_content" style = "padding-top: 20px;">
<b>Recurring:</b> Every <input type="text" name="wval"/> Week(s)
<br/>
<small>*Reference date: Member date added to the group</small>
<br/>
<input type="radio" name="recursched" value="weekmon"/> Monday <input type="radio" name="recursched" value="weektue"/>Tuesday <input type="radio" name="recursched" value="weekwed"/>Wednesday <input type="radio" name="recursched" value="weekthu"/>Thursday <input type="radio" name="recursched" value="weekfri"/> Friday
<input type="radio" name="recursched" value="weeksat"/> Saturday <input type="radio" name="recursched" value="weeksun"/> Sunday
</div>
<div id="tab7" class="tab_content" style = "padding-top: 20px;">
<b>Recurring:</b> <br/><small>*Reference date: Member date added to the group</small>
<br/>
<input type="radio" name="recursched" value="monthlyrecur"/> Day <input type="text" name="mday"/> of every <input type="text" name="mmonth"/> month(s)
<br/>
<input type="radio"name="recursched" value="monthlyrecur"/> The
<select name="mweek" class="styled">
<option value="First">First</option>
<option value="Second">Second</option>
<option value="Third">Third</option>
<option value="Fourth">Fourth</option>
</select>
</div>
<div id="tab8" class="tab_content" style = "padding-top: 20px;">
<b>Recurring:</b> <br/><small>*Reference date: Member date added to the group</small>
<br/>
<input type="radio" name="recursched" value="yearlyrecur"/> Every
<select name="ymonth" class="styled">
<?php
$ymontshar = array("January","Febuary","March","April","May","June","July","August","September","October","November","December");
for($ymonths=0;$ymonths<12;$ymonths++){
?>
<option value="<?php echo $ymontshar[$ymonths]; ?>"><?php echo $ymontshar[$ymonths]; ?></option>
<?php
}
?>
</select>
<input type="text" name="yday"/>
<br/>
<input type="radio" name="recursched" value="yearlyrecur2"/> The
<select name="yweek" class="styled">
<option value="first">First</option>
<option value="second">Second</option>
<option value="third">Third</option>
<option value="fourth">Fourth</option>
</select>
<select name="yday" class="styled">
<option value="monday">Monday</option>
<option value="tuesday">Tuesday</option>
<option value="wednesday">Wednesday</option>
<option value="thursday">Thursday</option>
<option value="friday">Friday</option>
<option value="saturday">Saturday</option>
<option value="sunday">Sunday</option>
</select>
of
<select name="ymonth2" class="styled">
<?php
for($ymonths2=0;$ymonths2<12;$ymonths2++){
?>
<option value="<?php echo $ymontshar[$ymonths2]; ?>"><?php echo $ymontshar[$ymonths2]; ?></option>
<?php
}
?>
</select>
</div>
</div>
<br/>
<input type="hidden" name="rows_ctr" id="rows_ctr" value="<?php echo $ctr;?>" />
<input type="hidden" name="rows_ctr1" id="rows_ctr1" value="<?php echo $ctr;?>" />
<input type="hidden" name="gid" id="" value="<?php echo $_GET['gid'];?>" />
<input type="submit" value="Save" class="btn-link right" />
<div class="clr"></div>
</div>
</form>
<br />
<div class="warning-msg">
<b>*Please note that changing the schedule may result in some members not receiving emails.</b>
</div>
</div>
</body>
.输入选择{宽度:200px;}
.带边框的表{边框折叠:折叠;边距:5px;}
.带边框的表td{border:1px solid#ccc;padding:4px;}
$(函数(){
$(“.tab_content”).hide();
$(“ul.tabs”)。每个(函数(){
$(this.find('li:first').addClass(“current”);
$(this).next('.panes').find('.tab_content:first').show();
});
/*绑定单击以显示另一个选项卡*/
$(“ul.a”)。单击(功能(事件){
var cTab=$(this).closest('li');
cTab.兄弟姐妹('li')。removeClass(“当前”);
cTab.addClass(“当前”);
cTab.closest('ul.tabs').nextAll('.panes:first').find('.tab_content').hide();
var activeTab=$(this).attr(“href”);//查找href属性值以标识活动选项卡+内容
$(activeTab).fadeIn();//淡入活动ID内容
返回false;
});
});
功能检查(evt){
evt=(evt)?evt:window.event
var charCode=(evt.which)?evt.which:evt.keyCode
如果(字符码>31&(字符码<48 | |字符码>57)){
status=“此字段仅接受数字。”
返回错误
}
status=“”
返回真值
}
函数addRows(elem){
var ctr=parseInt($(“#rows_ctr”).val())+parseInt(1);
变量行=$(elem);
emails_dropdown=$(“#email_id_sample”).clone();
行。最近('.adder')。父行('.adder行”)。在('Subject:'+emails_dropdown.html()+'')之前;
$(“#行/中心”).val(中心);
//$(“#email_id_uu”+ctr).val(“”);
}
函数addForm(){
var ctr=parseInt($(“#rows_ctr1”).val()+parseInt(1);
form#content=$(“#formcopy”).clone();
$('#cform>tbody>tr:last')。在(''+form_content.html()+'')之后;
$(“#行#ctr1”).val(ctr);
}
函数集合列表(str){
var postDatas=decodeURI($('#form'+str+'').serialize();
log('Post data:'+postDatas);
$.ajax({
url:base_url+“admin/page/file.php”,
类型:“POST”,
cache:false,
数据:postDatas,
beforeSend:function(){
$('#crm反馈'+str+'').html('';
},
成功:功能(数据){
//$('crm feedback').html('Saved!').css('color','green');
console.log('Success');
},
错误:函数(jqXHR、textStatus、errorshown){
console.log(jqXHR);
console.log(textStatus);
console.log(错误抛出);
}
});
}
设置组电子邮件和短信
也许它正在缓存它。像这样在ajax调用中尝试cache:false
function setList(str){
var postDatas = decodeURI($('#form'+str+'').serialize());
alert(postDatas);
// $('#crm-feedback').html('<img src="images/ajax-loader.gif"/>');
// var formname = "test";
$.ajax({
url: base_url+"admin/page/file.php",
type: "POST",
cache: false,
data: postDatas,
// data: "formname="+formname,
success: function(data){
// $('#crm-feedback').html('Saved!').css('color','green');
alert("test");
}
});
}
函数集合列表(str){
var postDatas=decodeURI($('#form'+str+'').serialize();
警报(postDatas);
//$(“#crm反馈”).html(“”);
//var formname=“测试”;
$.ajax({
url:base_url+“admin/page/file.php”,
类型:“POST”,
cache:false,
数据:postDatas,
//数据:“formname=“+formname,
成功:功能(数据){
//$('crm feedback').html('Saved!').css('color','green');
警报(“测试”);
}
});
}
可能它正在缓存它。像这样在ajax调用中尝试cache:false
function setList(str){
var postDatas = decodeURI($('#form'+str+'').serialize());
alert(postDatas);
// $('#crm-feedback').html('<img src="images/ajax-loader.gif"/>');
// var formname = "test";
$.ajax({
url: base_url+"admin/page/file.php",
type: "POST",
cache: false,
data: postDatas,
// data: "formname="+formname,
success: function(data){
// $('#crm-feedback').html('Saved!').css('color','green');
alert("test");
}
});
}
函数集合列表(str){
var postDatas=decodeURI($('#form'+str+'').serialize();
警报(postDatas);
//$(“#crm反馈”).html(“”);
//var formname=“测试”;
$.ajax({
url:base_url+“admin/page/file.php”,
类型:“POST”,
cache:false,
数据:postDatas,
//数据:“formname=“+formname,
成功:功能(数据){
//$('crm feedback').html('Saved!').css('color','green');
警报(“测试”);
}
});
}
除了查看javascript控制台,还需要查看正在交换的实际流量
用来检查它
您还应该尝试使用浏览器上可用的工具调试js
这是解决问题的关键一步。你需要确定这些请求是否真的发生了。如果是,那么您需要查看请求中的差异。否则,您可以调试js以了解到底发生了什么。除了查看javascript控制台外,您还需要查看正在交换的实际流量
用来检查它
您还应该尝试使用浏览器上可用的工具调试js
这是解决问题的关键一步。你需要确定这些请求是否真的发生了。如果是,那么您需要查看请求中的差异。否则,您可以调试js,以查明到底发生了什么。很可能是服务器端出错。您可以识别该错误
rand = rand.getMilliseconds(rand);
url_ajax ='myajaxpage.php?rand='+rand; // Force refresh
$.ajax({
url: url_ajax,
type: "POST",
...
header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
header("Pragma: no-cache"); //HTTP 1.0
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past