Jquery Ajax不使用Codeigniter

时间:2016-01-03 16:57:44

标签: javascript php jquery ajax codeigniter

我是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时,我想将文本框内的文本显示为span文本。但现在它什么都没有显示..

更新:

专家&#39;意见,我编辑了一些文字(见我的编辑说明),现在当我点击按钮时,它再次显示一个文本框和一个按钮.. !!

enter image description here

5 个答案:

答案 0 :(得分:2)

您是否使用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 :(得分: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>

答案 2 :(得分:1)

您的$('.progress-bar').filter(function(){ return $(this).css('width') === "10%"; }); 变量似乎未在JavaScript中定义。

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

HTML

base_url

JS

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

答案 3 :(得分:0)

尝试使用:

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

这是在ajaxtest:

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

还要评论这个:

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

答案 4 :(得分:0)

这个回复可能会有点迟到 - 但有人可能会在寻找解决方案时发现这一点。 我在Codeigniter和JQuery ajax / post响应时遇到了同样的问题。无论我尝试什么,我都无法工作。 最后,结果是导致问题的php_error。一旦我将其删除,我的帖子/回复一切正常。