0

问题

我有一个一直运行良好的脚本。它从来没有给出任何问题。它最后一次使用是在 12 月,没有任何问题。没有人改变任何东西。但现在,它不起作用。它应该做的是提交评论,然后通知用户该评论。但它不会进入该部分,它会保存并通知。

我做了什么和结果

我已经取出了保存和通知用户的特定脚本,并对其进行了测试。它不返回任何东西,这意味着它没有进入它。我检查了帖子数据,显示正确。我还强制发布正确的数据(通过更改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 规范中是否发生了可能导致其停止工作的更改?有什么我想念的吗?这是怎么回事!?

请帮忙!

4

1 回答 1

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
于 2013-01-10T10:54:09.850 回答