单击jquery按钮+发送没有表单的数据 - 书签

时间:2012-05-02 01:28:44

标签: jquery ajax codeigniter codeigniter-2

我正在开发书签功能,用户点击jQueryui按钮,然后将某些信息发送到数据库。但我没有使用表单,因为没有用户输入的信息。

我从会话数据中提取用户ID,我正在发送URI段(URL的一部分)

使用codeigniter / php。

我正在试图弄清楚要放在ajax / post函数的数据部分中的内容,因为没有输入任何表格/没有数据,以及如何处理控制器的“提交”部分。

控制器

function addBookmark(){

        if ($this->input->post('submit')) {

            $id = $this->session->userdata('id');               
            $bookmark = $this->uri->segment(3, 0);

            $this->bookmarks_model->postBookmark($id, $bookmark);
        }

    }

模型

function postBookmark() {

     $data = array(
            'user_id' => $user_id,
            'bookmark_id' => $bookmark,
    );

    $this->db->insert('bookmarks', $data);

    }

HTML

<button class="somebutton">Add bookmark</button>

的jQuery

$('.somebutton').click(function() { 

            $.ajax({
                url: 'controller/addBookmark',
                type: 'POST',
                data: ???,
                success: function (result) {
                  alert("Your bookmark has been saved");
                }
            });  

    });

3 个答案:

答案 0 :(得分:8)

您的问题是您正在检查submit args中的POST密钥。您可以通过发送data: {submit:true}或删除if语句并仅处理POST请求来伪造它

$('.somebutton').click(function() { 

        $.ajax({
            url: 'controller/addBookmark',
            type: 'POST',
            data: {'submit':true}, // An object with the key 'submit' and value 'true;
            success: function (result) {
              alert("Your bookmark has been saved");
            }
        });  

});

答案 1 :(得分:0)

而不是.ajax()使用.get().post()

使用.get()

 $.get('controller/addBookmark',function(data){ 
     alert('Your bookmark has been saved'); 
 });

使用.post()

 $.post('controller/addBookmark', function(data) {
     alert('Your bookmark has been saved, The contents of the page were:' + data); 
 });

答案 2 :(得分:0)

来自jQuery.ajax()

的文档
  

要发送到服务器的数据。它被转换为查询字符串if   还不是一个字符串。它附加到GET请求的URL。

如果您不知道要为数据添加什么,可能您应该删除该选项?在控制器函数addBookmark()中,您可以通过删除if检查来减少代码。试试这个,看看它是否适合你。