Jquery Ajax 无法与 Codeigniter 一起使用

问题描述 投票:0回答:5

我是 ajax 初学者,这里我尝试使用 Ajax 在同一页面中显示文本框值。

我的控制器代码:

<?php
class Merchant extends CI_Controller
 {

    public function ajaxtest()
    { 

     $this->load->helper('url');
     $this->load->view('ajaxtest');
     $fullname = $this->input->post("fullname");
     echo $fullname;

    }
}
?>

这是我的查看代码:

<head>
 <script src="<?php echo base_url();?>assets/js/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){   

    $("#getinfo").click(function()
    {   

     $.ajax({
         type: "POST",
         url: "<?php echo base_url(); ?>merchant/ajaxtest",
         data: {textbox: $("#fullname").val()},
         dataType: "text",  
         cache:false,
         success: 
              function(data){                    
                $('#mytext').html(data);
              }
          });
     return false;
 });
 });

</script>
 </head>
 <body>
 <form method="post">
        <input  type="text" id="fullname"/>
        <input  type="button" value="getinfo" id="getinfo"/>      
      <span id="mytext"></span>
 </form>

 </body>

当我单击按钮 getinfo 时,我想将文本框中的文本显示为跨度文本。但现在什么也没显示..

更新:

经过专家的意见,我编辑了一些文本(参见我的编辑注释),现在当我单击按钮时,它再次显示一个文本框和一个按钮..!!

javascript php jquery ajax codeigniter
5个回答
4
投票

您是否使用 Javascript 上的链接设置了

base_url
变量? 因为您的帖子网址包含此变量,您需要设置它才能使其正常工作。因此,请使用
base_url
链接初始化变量。

请参阅下面更正的示例。设置您的域名而不是 yourbaseurl.com

<script type="text/javascript">
$(document).ready(function(){   
    var base_url='http://yourbaseurl.com/index.php/';
    $("#getinfo").click(function()
    {   

     $.ajax({
         type: "POST",
         url: base_url + "merchant/ajaxtest", 
         data: {textbox: $("#fullname").val()},
         dataType: "text",  
         cache:false,
         success: 
              function(data){                    
                $('#mytext').html(data);
              }
          });
     return false;
 });
 });

</script>

1
投票

您的

base_url
变量似乎在 JavaScript 中未定义。

获取基本 URL 的一种简单方法是在隐藏输入中回显它,然后在 JS 代码中获取该输入的值:

HTML

<input type='hidden' id="baseUrl" value="<?php  echo base_url(); ?>" /> 

JS

var base_url = $('#baseUrl').val(); 


$.ajax({
     type: "POST",
     url: base_url + "/merchant/ajaxtest", 
     data: {textbox: $("#fullname").val()},
     dataType: "text",  
     // ... 

1
投票

您将文本框作为参数从 ajax 传递到控制器,并尝试获取名称为 fullname 的 POST 数据。这是行不通的,因为您将参数名称作为文本框传入。在您的帖子中访问该内容:

class Merchant extends CI_Controller
 {

    public function ajaxtest()
    { 
     $this->load->helper('url');
     //you dont need to load view so comment it
     //$this->load->view('ajaxtest');
     $fullname = $this->input->post("textbox"); //not fullname
     echo $fullname;
    }
}

js

<script type="text/javascript">
$(document).ready(function(){   
    var base_url='http://yourbaseurl.com/index.php/';
    $("#getinfo").click(function() {
    
    var fullname = $("#fullname").val();
    alert("Fullname:" + fullname); //do you get this alert   

     $.ajax({
         type: "POST",
         url: base_url + "merchant/ajaxtest", 
         data: {textbox: fullname},
         cache:false,
         success:function(data){
           alert("Response:" + data); //do you get this alert                 
           $('#mytext').html(data);
         }
     });
     return false;
 });
 });

</script>

0
投票

尝试使用这个:

<base href="<?=base_url();?>">
<script src="assets/js/jquery-latest.min.js"></script>

这在 ajaxtest 中:

$this->load->helper('url');

并且还注释掉这个:

// $this->load->view('ajaxtest');

0
投票

此回复可能有点晚了 - 但有人可能会在寻找解决方案时发现这一点。 我在使用 Codeigniter 和 JQuery ajax/post 响应时遇到了同样的问题。无论我如何尝试,我都无法让它发挥作用。 最后发现是 php_error 导致了这个问题。一旦我删除它,我的帖子/回复一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.