我是 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 上的链接设置了
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>
您的
base_url
变量似乎在 JavaScript 中未定义。
获取基本 URL 的一种简单方法是在隐藏输入中回显它,然后在 JS 代码中获取该输入的值:
<input type='hidden' id="baseUrl" value="<?php echo base_url(); ?>" />
var base_url = $('#baseUrl').val();
$.ajax({
type: "POST",
url: base_url + "/merchant/ajaxtest",
data: {textbox: $("#fullname").val()},
dataType: "text",
// ...
您将文本框作为参数从 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>
尝试使用这个:
<base href="<?=base_url();?>">
<script src="assets/js/jquery-latest.min.js"></script>
这在 ajaxtest 中:
$this->load->helper('url');
并且还注释掉这个:
// $this->load->view('ajaxtest');
此回复可能有点晚了 - 但有人可能会在寻找解决方案时发现这一点。 我在使用 Codeigniter 和 JQuery ajax/post 响应时遇到了同样的问题。无论我如何尝试,我都无法让它发挥作用。 最后发现是 php_error 导致了这个问题。一旦我删除它,我的帖子/回复一切正常。