我正在尝试通过ajax

时间:2019-12-11 06:03:55

标签: javascript jquery ajax typo3

我正在尝试通过ajax json数组传递值,但是catergory变量的值没有参与控制器操作

var category = $('#category').val();
var url = $('#ajax_action_search').val();
$.ajax({
  type: "POST",
  data: {
    'category': category
  },
  dataType: "json",
  cache: false,
  contentType: false,
  processData: false,
  success: function(response) {}
});

4 个答案:

答案 0 :(得分:1)

您需要使用与扩展名/插件匹配的参数名称空间:

$.ajax({
  // ...
  data: {
    'tx_myext_foo[category]': category,
  },
  // ...
});

但是您还需要配置cHash评估,因为这将导致类似/?tx_myext_foo[category]=X的HTTP请求,如果没有匹配的cHash,HTTP请求将失败。

这可以通过excludedParameters configuration option完成。

答案 1 :(得分:0)

如果从ajax传递的category(参数名称)在控制器操作中也完全相同,请检查控制器操作

var category = $('#category').val();
var url = $('#ajax_action_search').val();
$.ajax({
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    cache: false,
    async: false,
    url: url,
    data: JSON.stringify {
        category: category
    },
    dataType: 'json',
    success: function(response) {}
});

答案 2 :(得分:0)

您需要使用动作和控制器制作ajaxurl。然后以完整格式传递数据。

var ajaxUrl = '<f:uri.action action="youraction" controller="Yourcontroller" />';
var category = $('#category').val();

$.ajax({
    type: 'POST',
    url: ajaxUrl,
    data: '&tx_yourext_yourplugin[category]='+category,
    success: function(response) {
    },
});

答案 3 :(得分:-1)

只需进行以下更改:

var category = $('#category').val();
var url = $('#ajax_action_search').val();

$.ajax({
  type: "POST",
  url:url,
  data: {'category': category},
  dataType: "json",
  success: function(response) {}
});