1

ajax 投稿でトークンを設定しようとしていますが、コントローラー メソッドによって認識されません。javascrip は次のようになります。

jQuery(document).ready(function() {
    jQuery('#source').change(function() {
        jQuery('#fileupload').addClass('fileupload-processing');
        var data = jQuery('#source option:selected').val();
        jQuery.post('index.php', {
            'option': 'com_tieraerzte',
            'task': 'parser.importColumns',
            'tmpl': 'component',
            'token':'<?php echo JUtility::getToken()?>',
            'app': data,
            'dataType': 'html',
        }, function(result) {
            jQuery('td.add_column').html(result);
            jQuery('button#parse.btn').show();
            //edit the result here
            return;
        });
    });

トークンが生成され、投稿されています

コントローラーで toke の存在を確認しますが、無効なトークンがスローされます

コントローラ チェック トークン

 JRequest::checkToken('request') or jexit( 'Invalid Token' );
4

2 に答える 2

0

ajax 呼び出しメソッドでは、url を次のように使用します。

$.ajax({
              url: '/index.php?option=com_itemreview&task=item.userReviewVote&<?php echo JSession::getFormToken(); ?>=1',
              type: 'post',
              data: {'data': submitvalue},
              dataType: 'json',
              success: function(response) {
              }
});

詳細については、次を参照してください。

http://joomlabuzz.com/blog/27-preventing-cross-site-request-forgery-in-joomla

https://docs.joomla.org/How_to_add_CSRF_anti-spoofing_to_forms

于 2015-10-28T14:51:42.187 に答える