PHP和ajax没有更新

PHP和ajax没有更新,php,javascript,ajax,jquery,Php,Javascript,Ajax,Jquery,我有一个ajax请求,看起来像这样 $('input.fakecheck').click(function(){ alert("deleteing...."); $.ajax({ url:"/search", type:"POST", data: $(this).attr('name')+"="+$(this).attr('value')+"&remove=Remove", success:function() { alert(data);

我有一个ajax请求,看起来像这样

$('input.fakecheck').click(function(){
alert("deleteing....");
$.ajax({
    url:"/search",
    type:"POST",
    data: $(this).attr('name')+"="+$(this).attr('value')+"&remove=Remove",
    success:function() {
        alert(data);
    }
})
private function _remove_from_short_list($cv_array)
    {
        if (is_array($cv_array))
        {
            $short_list = $this->session->userdata('short_list');
            $new_list = array_diff_key($short_list, $cv_array);
            $this->session->set_userdata('short_list', $new_list);

        }
    }
})

这将调用一个php函数,如下所示

$('input.fakecheck').click(function(){
alert("deleteing....");
$.ajax({
    url:"/search",
    type:"POST",
    data: $(this).attr('name')+"="+$(this).attr('value')+"&remove=Remove",
    success:function() {
        alert(data);
    }
})
private function _remove_from_short_list($cv_array)
    {
        if (is_array($cv_array))
        {
            $short_list = $this->session->userdata('short_list');
            $new_list = array_diff_key($short_list, $cv_array);
            $this->session->set_userdata('short_list', $new_list);

        }
    }

重要的是,在我的页面上,我有一个列表,本质上是一个从会话中取出的id列表,用户可以通过单击并输入(这将改变)从会话中删除id。然而,一旦删除发生,我希望能够刷新列表以显示它已经发生,目前什么也不会发生,直到我手动刷新。

好吧,您必须发回列表的更新版本,然后在“成功”功能中对其进行处理。您可以让客户端代码(Javascript)采取适当的操作,但服务器发回更新可能更好,因为服务器是“现实”所在的地方。

您通常需要在成功函数中触发一些内容来修改列表

如果你有这样一个结构

<ul>
    <li>
        <input id="1" type="checkbox" class="fakecheck" />
    </li>
    <li>
        <input id="2" type="checkbox" class="fakecheck" />
    </li>
</ul>
这显然没有考虑AJAX请求中的任何错误处理。如果你能为你的列表发布HTML,我也能对你试图改变的结构有更好的感觉


正如Pointy提到的,如果您要修改列表,而不是获取更新的列表,那么您必须确保您的服务器请求实际上已经删除了该项。

如果可以接受,那么您可以在javascript成功函数中执行页面刷新。

而不是页面刷新,您可以在JS中调用第二个函数来更新浏览器中的HTML。将PHP输出的目标ID和HTML发送到如下函数:

function  HandleResponse(response, target)
{
  document.getElementById(target).innerHTML = response;
}
但是,一旦删除发生,我希望能够刷新列表,以显示它已经发生,目前什么都不会发生,直到我手动刷新

听起来像是在用PHP构建页面,即PHP生成HTML,它通过JavaScript添加了一个行为层。如果您正在实现自己版本的复选框,并且该复选框应该被更新,那么请确保在HTTP请求完成时在JavaScript(ajax.success函数回调)中进行UI更新

我个人的建议是:将页面构建移出PHP,让JavaScript代替它,无论是在页面加载还是在Ajax请求的响应上,让PHP做一些更简单的事情,比如返回一个应该检查的当前会话id列表