【问题标题】:multiple parameter passing by ajax in CI controller not workingCI控制器中ajax传递的多个参数不起作用
【发布时间】:2016-06-02 09:15:47
【问题描述】:

当我在 ajax 调用中将两个参数传递给 CI 控制器时,值在实时服务器中显示为 null。但如果我发送一个参数它工作正常。在本地服务器上一切正常。

Ajax 代码

<script type="text/javascript">
$(document).ready(function () {
$("#searchoption").keyup(function ()
{

var searchdata = $(this).val();
//alert(searchdata);
$.ajax({
url: BASE_URL + 'somajsebadmin/somajsebadmin_dashboard/search_muktijuddha_vatha_information',
type: 'POST',
 data: 'searchvalue=' + searchdata + '&table_name=' + 'muktijuddha_vatha_application',
beforeSend: function() {
// setting a timeout
$('#loader').show();
},
success: function (data) {
$('#loader').hide();
$("#searchdata").html(data);
}
});

});
});
</script>

我的控制器方法代码

public function search_muktijuddha_vatha_information() {

//     header('Content-Type: application/json');


if ($this->input->is_ajax_request()) {

$searchvalue = $this->input->post('searchvalue');
$tableName = $this->input->post('table_name');

//  $tableName = 'muktijuddha_vatha_application';

var_dump($searchvalue,$tableName);
}
}

输出

null null

我的 htaccess 代码

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>

<IfModule !mod_rewrite.c>
   ErrorDocument 404 /index.php
</IfModule>

【问题讨论】:

    标签: php jquery ajax .htaccess codeigniter


    【解决方案1】:

    在 AJAX 中尝试对象:

    data: { searchvalue: searchdata, table_name: 'muktijuddha_vatha_application' }, 
    

    【讨论】:

      【解决方案2】:

      要调试您的代码,我将从 ajax 开始,您将 jquery 中的 var_dump 导出为

      $("#searchdata").html(data);
      

      我总是使用console.log(data),所以你不会有css或html没有把你的var_dump数据输出的问题。所以试试这个:

      console.log(data);
      

      第二件事在 chrome 或 FF firebug 上打开您的检查元素,查看是否有 POST 以及发送到哪个 URL,以及已发布哪些数据。

      然后,您检查了 ajax 是否正在发布到 url,然后检查 url 是否存在以及 URL 的响应是什么,然后是否从 PHP 显示响应,然后查看 console.log 是否(或像您所做的那样 $("#searchdata" ).html(data);) 确实导出了您的 var_dump。

      要发布多个数据,请尝试像这样发布:

      data: { code: code, userid: userid }
      

      或者在你的情况下是这样的:

       data {searchvalue: searchdata, table_name:'muktijuddha_vatha_application' }
      

      【讨论】:

      • 我也使用 firebug 和检查 chrome 中的元素进行调试。它作为 post 参数传递了实际值,但是当我在 CI 结果中的 vur_dump 为 null、null 时。我说过,如果我发送一个参数,它在多个参数上工作正常问题。多个参数在 localhost 中也工作正常
      • 所以你能告诉我你在网络下的检查元素中看到了什么,传递给 CI 的是什么?什么 POST 传递给 php url?
      • 它应该通过 searchdata 和 muktijuddha_vatha_application 然后在 CI 你可以说: var_dump($_POST);查看所有发布的值
      • 当你看到 var_dump($_POST) 时,你可以像以前一样使用 codeigniter 方法来获取 post 值:$searchvalue = $this->input->post('searchvalue') ; $tableName = $this->input->post('table_name');
      • 从您的代码中,第二个值是:table_name=' + 'muktijuddha_vatha_application',它不是变量值'muktijuddha_vatha_application',它将始终是:var_dump 中的muktijuddha_vatha_application,但如果发布了值,请仔细查看去CI?如果不尝试像上面提到的那样将代码更改为对象作为来自 ajax 的帖子
      猜你喜欢
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2015-04-03
      相关资源
      最近更新 更多