9

我正在开发一个书签功能,用户单击 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");
                }
            });  

    });
4

3 回答 3

8

您的问题是您正在检查argssubmit中的键。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");
            }
        });  

});
于 2012-05-02T01:38:18.690 回答
0

而不是使用.ajax()use.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); 
 });
于 2012-05-02T01:32:35.573 回答
0

来自jQuery.ajax()的文档

要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它附加到 GET 请求的 url。

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

于 2012-05-02T01:47:01.010 回答