[英]Codeigniter, Vanilla JS: Sending Ajax post request but not recieving any data in php
大家好,我在使用ajax發送和接收帖子數據時遇到一些問題。 我對這件事並不陌生。 我剛剛開始使用codeigniter框架,現在,我一直用於ajax的模式不再起作用。 (以前從未使用過“外國”框架,但我自己使用過)我希望您能為我提供幫助。
主要問題是php控制器無法接收發布數據。
ajax.js (ajax處理,在調用時AJAX_URL是' http:// localhost / ajax / process ,我已經檢查過了):
function AjaxRequest(callback, data) {
this.data = (data!== undefined) ? data : [];
this.callback = callback;
this.request = new XMLHttpRequest();
this.addData = function(key, value) {
this.data[key] = value;
};
this.send = function() {
var callback = this.callback;
this.request.open('POST', <b>AJAX_URL</b>, true);
this.request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
this.request.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
callback(this.responseXML);
}
};
var data = this.createPostData();
this.request.send(data);
};
this.createPostData = function() {
var data = '';
for (var key in this.data) {
data += key + '=' + this.data[key] + '&';
}
data = data.slice(0, -1);
console.log(data);
};
}
actions.js (包含來自網站的操作處理):
function requestLogin() {
var username = $("input#txtUsername").val();
var password = $("input#txtPassword").val();
var request = new AjaxRequest(callbackLogin);
request.addData('action' , 'login_user');
request.addData('username', username);
request.addData('password', password);
request.send();
}
function callbackLogin(xml) {
console.log(xml);
}
Ajax.php (用於處理ajax請求的CI_Controller):
class Ajax extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->library('session');
$this->load->model('user_model');
}
public function process() {
$data = $this->input->post();
$action = $data['action'];
if (method_exists($this, $action)) {
$this->$action($data);
}
}
public function login_user($data) {
$passwd_enc = md5($data['password']);
$xml_resp = new Xml_response();
$user = $this->user_model->login_user($data['username'], $passwd_enc);
$xml_resp->start();
if (!$user) {
$xml_resp->error();
$xml_resp->send_message(Xml_message::ERROR, 'Benutzername oder Kennwort ist inkorrekt.');
} else {
$xml_resp->success();
$xml_resp->send_message(Xml_message::SUCCESS, 'Sie wurden erfolgreich angemeldet.');
$xml_resp->send_data('user', $user);
}
$xml_resp->end();
}
}
現在,當我嘗試發送請求時,方法過程被調用(通過日志記錄進行檢查),但是post數組為空(每種情況:$ _POST或codeigniter自己的post數組),並且我收到一個responseXML,它為null 。
我在這部分做錯了什么嗎?使用Codeigniter時是否還需要考慮其他事項?
預先非常感謝您,請不要因為我的英語不好而感到震驚(我來自瑞士;)
最好的問候,Tobias Widner
嘗試在請求網址的末尾添加斜杠。 我不知道您的codeigniter配置是否與我的相同,但是如果我在URL末尾不加斜杠,則我的.htaccess重定向到帶有斜杠的URL。 此重定向將刪除所有發布數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.