使用jquery的Ajax不起作用

时间:2009-12-24 05:41:11

标签: jquery ajax codeigniter

在视图页面中

<script languge="javascript" type="text/javascript">
  $(document).ready(function() {
    $('#delete').click(function(e) {;
        e.preventDefault();
        var parent = $(this).parent();
        mainParent=parent.parent();

        $.ajax({ 
            type: 'post',
            url: "<?= site_url('controller_Test/fnDelete') ?>",
            data: "id="+$(this).prev().text(),

            success: function() {
                mainParent.slideUp(0,function() {
                    mainParent.remove();
                });
            }

        });
        return false;
    });
});

控制器--controller_Test

function fnDelete(){
   $data['delete_me']=$_POST['id'];

    if (!empty($data['delete_me'])){
        $this->load->model('data_Model', '', TRUE);
        $this->properties->deleteRec($data['delete_me']);
        $this->output->set_output('works');
    } else {
        $this->output->set_output('dontwork');

    }
}

在这个fnDelete中应该删除数据库中的一行。但它没有删除。但它从视图中删除该行。我使用codeigniter。 我的代码有什么问题。?

2 个答案:

答案 0 :(得分:2)

首先,你有一个奇怪的分号:

$('#delete').click(function(e) {;

从最后删除它。然后,尝试这样的数据:

data: {"id":$(this).prev().text()}

您可能还希望在回调中处理响应,并回显结果,以便了解PHP是成功还是失败。

success: function(results) {
  if (results == "success") {
    /* remove associated elements */
  } else {
    alert("An error occurred.");
  }
}

答案 1 :(得分:0)

为了测试你的功能,你可能想要使用fiddler,或者你也可以在你的控制器中添加一个回音并在你的成功函数中添加一个警报。例如:

  $(document).ready(function() {
    $('#delete').click(function(e) {;    
        e.preventDefault();
        $.ajax({ 
            dataType: 'text',
            success: function(responseText) {
                alert(responseText);
            }

        });
        return false;
    });
});

控制器--controller_Test

function fnDelete(){
   $data['delete_me']=$_POST['id'];
   echo 'deleting ' . $data['delete_me']
   // ...
}