Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CodeIgniter中通过javascript发送帖子?_Javascript_Php_Jquery - Fatal编程技术网

如何在CodeIgniter中通过javascript发送帖子?

如何在CodeIgniter中通过javascript发送帖子?,javascript,php,jquery,Javascript,Php,Jquery,单击链接时,我想在Codeigniter中发送一个post表单: 我的html代码: <a href="<?php echo site_url('clientes/delete/'); ?>" id="<?php echo $id; ?>">Delete</a> 我想使用post方法,因为使用csrf保护更安全 谢谢来源: 您需要在html标头中创建一个全局变量以保护csrf: <script> var csrf_token_na

单击链接时,我想在Codeigniter中发送一个post表单:

我的html代码:

<a href="<?php echo site_url('clientes/delete/'); ?>" id="<?php echo $id; ?>">Delete</a>

我想使用post方法,因为使用csrf保护更安全

谢谢

来源:

您需要在html标头中创建一个全局变量以保护csrf:

<script>
var csrf_token_name = "<?php echo $this->security->get_csrf_token_name(); ?>";
var csrf_hash = "<?php echo $this->security->get_csrf_hash(); ?>";
</script>

var csrf_token_name=“”;
var csrf_hash=“”;
编辑html链接:

<a href="http://httpbin.org/post" id="5" class="delete" onclick="return false;">Delete row</a>

并添加以下javascript代码:

<script>
create_form_post = function(action, fields, target) {
    if(target == undefined) {
        target = '_self';
    }

    fields[csrf_token_name] = csrf_hash;

    id_form = makeid();
    $( '<form method="POST" action="'+action+'" target="'+target+'" id="'+id_form+'" style="display:none !important;"></form>' ).appendTo( "body" );
    $.each(fields, function( k, v ) {
        $( '<input name="'+k+'" value="'+v+'" type="hidden" />' ).appendTo( "form#"+id_form );
    });
    return id_form;
}


function makeid()
{
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for( var i=0; i < 9; i++ )
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
}

$(document).ready(function() {
    $("a.delete").click(function() {    
        if(confirm("¿Are you sure?")) {
            action = $(this).attr('href');
            delete_id = $(this).attr('id');
            id_delete_form = create_form_post(action, {id: delete_id});
            $("form#" + id_delete_form).submit();
        }
    });
});
</script>

创建表单发布=函数(操作、字段、目标){
如果(目标==未定义){
目标='u self';
}
字段[csrf\U令牌\U名称]=csrf\U哈希;
id_form=makeid();
$('')。附于(“正文”);
$.each(字段、函数(k、v){
$('').appendTo(“form#”+id_form);
});
返回id_表;
}
函数makeid()
{
var text=“”;
var-mablue=“ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789”;
对于(变量i=0;i<9;i++)
text+=可能的.charAt(Math.floor(Math.random()*可能的.length));
返回文本;
}
$(文档).ready(函数(){
$(“a.delete”)。单击(函数(){
如果(确认(“你确定吗?”){
action=$(this.attr('href');
delete_id=$(this.attr('id');
id_delete_form=create_form_post(操作,{id:delete_id});
$(“form#“+id_delete_form).submit();
}
});
});
使用AJAX

url = '<?php echo site_url('clientes/delete/'); ?>';
$('.delete').click(function(){
    clientId = $(this).attr('id');
    $.ajax({
      type: "POST",
      url: url, 
      data: { clientId: clientId }
    });
})

提示:使用
。最好使用
方法,并将按钮样式设置为普通链接。
POST
(或任何相关方法)是
元素的属性。另一种方法是使用post方法触发AJAX请求,而不是默认的链接操作。既然您使用的是jQuery,为什么不在
上发出AJAX请求。删除
单击?为什么要经历所有创建表单的麻烦呢?您可以将此代码用于所有应用程序,只需添加一个带有delete类的链接即可。我的建议(ajax请求)有何不同?我非常熟悉jQuery,仅此而已!这更为复杂。您需要发送请求、等待响应并解释响应。
if(isset($_POST['clientId'] {
    $clientId = $_POST['clientId'];
} else {
    $clientId = 'No data';
}