秘银 ajax 发送空输入
Mithril ajax sending empty inputs
我正在尝试使用 CodeIgniter 通过 ajax 和 Mithril.js 发送 POST 请求。但由于某种原因,输入始终为空。我已经尝试过使用常规 ajax post 请求并且效果很好,但 Mithril 没有。
m.request({
method: "POST",
url: "http://localhost/index.php/login",
data: {
username: $("#login-username").val(),
password: $("#login-password").val()
}
})
.then(function(result) {
console.log(result)
})
还有 php
public function login()
{
$username = $this->input->post('username');
die($username);
}
它总是在控制台中打印 "null"。有什么想法吗?
更新:
<form class="uk-form-stacked uk-margin-remove" id="login-form" method="post" action="index.php/login">
<fieldset class="uk-fieldset">
<div class="uk-margin">
<div class="uk-inline uk-width-1-1">
<span class="uk-form-icon" uk-icon="icon: user"></span>
<input class="uk-input" id="login-username" name="username" type="text" placeholder="Username">
</div>
</div>
<div class="uk-margin">
<div class="uk-inline uk-width-1-1">
<span class="uk-form-icon" uk-icon="icon: lock"></span>
<input class="uk-input" id="login-password" name="password" type="password" placeholder="Password">
</div>
</div>
<div class="uk-margin" style="margin-top:10px">
<label ><input class="uk-checkbox" type="checkbox"> Remember me</label>
</div>
<input type="submit" class="uk-button uk-button-primary uk-width-1-1" value="Login">
</fieldset>
</form>
路线:
$route['login']['post'] = 'Users/login';
尝试打印数据以便能够在控制台中看到它。
public function login()
{
$username = $this->input->post('username');
echo $username;
}
我不知道你有没有定义一个路由(在app/config/route.php)但是,实际上你指向的是默认控制器。
例如,如果您尝试将请求发送到 users
控制器的 login
方法,您的请求路径应为 http://localhost/index.php/users/login
我还建议您使用 base_url
函数而不是简单的字符串,这在您将应用程序部署到真实服务器上时要容易得多。
所以,我建议改一下这条线
url: "http://localhost/index.php/users/login",
由
url: <?= json_encode(base_url("/users/login")) ?>,
要实现此功能,您应该在控制器中 __construct
或直接在当前方法中加载 URI
助手:
$this->load->helper('URI');
该代码将 JSON 正文发送到服务器,而不是表单提交。我猜你的 PHP 代码希望数据被格式化为 <form>
会发送它,所以你想要使用 FormData
实例。
var data = new FormData();
data.append("username", document.querySelector("#username").value);
data.append("password", document.querySelector("#password").value);
m.request({
method: "POST",
url: "https://httpbin.org/post",
data: data
})
.then(function(result) {
console.log(result)
})
我还设置了一个 JsBin,您可以在其中查看它的运行情况并查看它。
我正在尝试使用 CodeIgniter 通过 ajax 和 Mithril.js 发送 POST 请求。但由于某种原因,输入始终为空。我已经尝试过使用常规 ajax post 请求并且效果很好,但 Mithril 没有。
m.request({
method: "POST",
url: "http://localhost/index.php/login",
data: {
username: $("#login-username").val(),
password: $("#login-password").val()
}
})
.then(function(result) {
console.log(result)
})
还有 php
public function login()
{
$username = $this->input->post('username');
die($username);
}
它总是在控制台中打印 "null"。有什么想法吗?
更新:
<form class="uk-form-stacked uk-margin-remove" id="login-form" method="post" action="index.php/login">
<fieldset class="uk-fieldset">
<div class="uk-margin">
<div class="uk-inline uk-width-1-1">
<span class="uk-form-icon" uk-icon="icon: user"></span>
<input class="uk-input" id="login-username" name="username" type="text" placeholder="Username">
</div>
</div>
<div class="uk-margin">
<div class="uk-inline uk-width-1-1">
<span class="uk-form-icon" uk-icon="icon: lock"></span>
<input class="uk-input" id="login-password" name="password" type="password" placeholder="Password">
</div>
</div>
<div class="uk-margin" style="margin-top:10px">
<label ><input class="uk-checkbox" type="checkbox"> Remember me</label>
</div>
<input type="submit" class="uk-button uk-button-primary uk-width-1-1" value="Login">
</fieldset>
</form>
路线:
$route['login']['post'] = 'Users/login';
尝试打印数据以便能够在控制台中看到它。
public function login()
{
$username = $this->input->post('username');
echo $username;
}
我不知道你有没有定义一个路由(在app/config/route.php)但是,实际上你指向的是默认控制器。
例如,如果您尝试将请求发送到 users
控制器的 login
方法,您的请求路径应为 http://localhost/index.php/users/login
我还建议您使用 base_url
函数而不是简单的字符串,这在您将应用程序部署到真实服务器上时要容易得多。
所以,我建议改一下这条线
url: "http://localhost/index.php/users/login",
由
url: <?= json_encode(base_url("/users/login")) ?>,
要实现此功能,您应该在控制器中 __construct
或直接在当前方法中加载 URI
助手:
$this->load->helper('URI');
该代码将 JSON 正文发送到服务器,而不是表单提交。我猜你的 PHP 代码希望数据被格式化为 <form>
会发送它,所以你想要使用 FormData
实例。
var data = new FormData();
data.append("username", document.querySelector("#username").value);
data.append("password", document.querySelector("#password").value);
m.request({
method: "POST",
url: "https://httpbin.org/post",
data: data
})
.then(function(result) {
console.log(result)
})
我还设置了一个 JsBin,您可以在其中查看它的运行情况并查看它。