【发布时间】:2014-12-31 14:47:37
【问题描述】:
所以我在 CI 中有一个控制器来更新 Shoutcast 服务器的标题。
我希望能够在不重新加载页面的情况下运行表单。
适用的控制器/视图如下;
控制器
function update_title()
{
$this->form_validation->set_rules('song', 'Song', 'trim|required|xss_clean');
$this->form_validation->set_error_delimiters(
'<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>', '</div>'
);
if ($this->form_validation->run() == FALSE)
{
/* $this->load->view('header');
$this->load->view('radio/panel'); // Failed validation
$this->load->view('footer'); */
$this->broadcast();
}
else
{
$data = $this->data;
$ip = $data[1]; // Server Address
$port = $data[2]; // Server Port
$pass = $data[4]; // Admin Password
// -------------------------------------------------
$song = $this->input->post('song');
$song = urlencode($song);
$song = str_replace("+", "%20", $song);
$fp = @fsockopen($ip,$port,$errno,$errstr,4);
if (!$fp) {
print "Error: cant get server, please check that server is online";
} else {
fputs($fp, "GET /admin.cgi?pass=" . $pass . "&mode=updinfo&song=" . $song . " HTTP/1.0\r\n");
fputs($fp, "User-Agent: Mozilla\r\n\r\n");
fclose($fp);
$song = str_replace("%20", "+", $song);
$song = urldecode($song);
}
$this->load->view('header');
$this->load->view('radio/title_updated');
$this->load->view('footer');
}
}
查看
<?php
$input_title = array(
'name' => 'song',
'id' => 'song',
'size' => 30,
'class' => 'form-control',
'placeholder' => 'Artist(s) - Show Name'
);
$input_submit = array(
'name' => 'submit',
'class' => 'btn btn-primary',
'type' => 'submit'
);
?>
<div class="container">
<div class="col-lg-10">
<div class="row well">
<?php echo validation_errors(); ?>
<div class="col-xs-12 col-sm-12 col-md-10">
<?php
echo form_open('radio/update_title');
echo '<div class="input-group">';
echo form_input($input_title);
echo '<span class="input-group-btn">';
echo form_button($input_submit, '<i class="fa fa-refresh fa-1x"></i>');
//echo form_submit('submit', 'Update Show Title', "class='btn btn-primary'");
echo '</span></div>';
echo form_close();
?>
</div>
</div>
</div>
</div> <!-- /container -->
这一切都很完美,但是正如我所说的页面令人耳目一新。我已经尝试遵循一些指南,但是无论我尝试什么,页面都会重新加载。
有人可以提供一些建议吗?
提前谢谢你!
【问题讨论】:
-
我假设您尝试过使用 AJAX?在您的
submit事件侦听器结束时调用event.preventDefault()或return false非常重要,否则它将尝试提交和刷新。 -
你好约瑟夫,我确实有。您在上面看到的基本上是未经我尝试的代码。在使用 CI 之前,我已经完美地完成了这项工作,但是我之前所做的一切似乎都没有产生预期的结果/sadface。
-
显示您的尝试,而不是显示 php 控制器代码。使用 jQery 可以非常简单地做到这一点,但您需要显示问题发生在哪里
标签: php jquery forms codeigniter validation