问题
我的脚本一直运行良好。它从来没有给出任何问题。它最后一次使用是在十二月,没有任何问题。没有人改变任何事情。但现在,它不起作用。应该做的是提交评论,然后通知用户评论。但它没有进入该部分,只是保存并通知。
我做了什么和结果
我已经删除了保存并通知用户并测试它的脚本的特定部分。它不会返回任何意味着它不会进入它的东西。我检查了帖子数据,显示正确。我还强制要发布正确的数据(将params = $('#reviewForm').serialize();
更改为params = 'counter=1'
。
我的代码
以下是用户填写的表单:
<form id="reviewForm">
Employee that will be reviewed: <input type="text" id="reviewed" name="reviewed" class="items"/><br>
<div id="openReviews" class="ui-corner-all ui-state-error" style="padding: 5 5 5 5"></div>
Employees that will do the review:<br>
<div id="reviewee_1">
<ul><b>Employee 1:</b>
<li>Name: <input type="text" id="reviewer_1" name="reviewer_1" class="items"/></li>
<li>Position: <select id="position_1" name="position_1" class="items">
<option value="sup">Supervisor</option>
<option value="supp">Peers: Support</option>
<option value="tech">Peers: Technical</option>
<option value="sub">Sub-Ordinate</option>
</select></li>
</ul>
</div>
<input type="hidden" id="counter" name="counter" value="1" class="items"/>
Add Another Reviewer <input type="button" id="add" value="Go >>"/><br>
<input type="button" onClick="sendInfo()" value="Create Review"/>
</form>
单击Create Review时,它会调用这段jQuery代码:
function sendInfo()
{
if($('#reviewed').val() != "")
{
var params = $("#reviewForm").serialize();
$.post('reviews.php',
params, // as stated, even if I change this to counter = 1, it doesn't work
function(data) {
$('#reviewForm').hide();
$('<p>' + data + '</p>').insertBefore('#reviewForm');
});
}
else
{
alert("Please complete all fields in this form!");
}
}
最后,处理请求的代码:
if($_POST['counter'] > 0) // check if review was submitted
{
// do stuff...
// it doesn't even enter this...
}
问题
PHP或jQuery规范中的某些内容是否会发生变化,导致其停止工作? 有什么东西我不见了吗? 发生了什么事?!
请帮忙!
答案 0 :(得分:0)
全部取决于您使用的JQuery版本。
我会替换:
var params = $("#reviewForm").serialize();
到
var params = {};
$.each($("#reviewForm").serializeArray(),function(key, elem){ params[elem.name] = elem.value });
对于帖子我会使用
$.ajax({
type: "POST",
'url': 'reviews.php',
'cache': false,
'async': true,
'data': params
}).done(function( data ) {
$('#reviewForm').hide();
$('<p>' + data + '</p>').insertBefore('#reviewForm');
}); //before ; you can use 'fail' methot to catch errors