これをCodeigniterで動作させたい:
name = encodeURIComponent( document.getElementById("myName").value);
xmlHttp.open("GET", "quickstart.php?name=" + name, true);
xmlHttp.onreadystatechange = handleServerResponse; //not relevant for question
xmlHttp.send(null);
パラメーターを持つ関数を使用してコントローラーを作成し、前のコードを変更しました。
xmlHttp.open("GET", "quickstart.php?name=" + name, true);
に
xmlHttp.open("GET", "ajax/quickstart/"+name, true);
私はこのルートを使用します(しかし機能しません):
$route['ajax'] = 'ajax';
$route['ajax/quickstart'] = 'ajax/quickstart';
$route['ajax/quickstart/([A-Za-z0-9])+'] = 'ajax/quickstart/$1';
私が抱えている問題は、最後の手紙しか書かれていないことです。例えば「name」と書いたら「e」だけが引数として渡されます。しかし、すべての言葉が送信されました。 私のコントローラ関数は次のようになります:
public function quickstart($name='')
{
// we'll generate XML output
header('Content-Type: text/xml');
// generate XML header
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
// create the <response> element
echo '<response>';
// retrieve the user name
//$name = $this->input->get('name');
// generate output depending on the user name received from client
$userNames = array('YODA', 'AUDRA', 'BOGDAN');
if (in_array(strtoupper($name), $userNames))
echo 'Hello, master ' . htmlentities($name) . '!';
else if (trim($name) == '')
echo 'Stranger, please tell me your name!';
else
echo htmlentities($name) . ', I don\'t know you!';
// close the <response> element
echo '</response>';
}