我對symfony還比較陌生,所以如果這是一個愚蠢的問題,我很抱歉。我使用symfony 1.4和Doctrine。我的同事寫了一個JavaScript,使我們的客戶端插件報告到我們的服務器:如何在symfony 1.4的actions.class.php中訪問POST參數?
$j.post(serverpath, {widget_id:widget_id, user_id:user_id, object_id:object_id, action_type:action_type, text_value:stuff_to_report });
我創建了一個routing.yml中路由接收到這個請求:
widget_report:
url: /widget/report/
options: {model: ReportClass, type: object }
param: {module: widget, action: reports}
requirements:
object_id: \d+
user_id: \d+
action_type: \d+
sf_method: [post]
我創建了一個行動的actions.class.php處理請求:
public function executeReports(sfWebRequest $request) {
foreach($request->getParameterHolder()->getAll() as $param => $val) {
// $param is the query string name, $val is its value
$this->logMessage("executeReports: $param is $val");
}
try {
[...]
$actionHistory->setUserId($request->getParameter('user_id', 1));
$this->logMessage("executeReports success: ");
} catch {
[...]
}
}
我的日誌文件中報告:
Jul 20 18:51:35 symfony [info] {widgetActions} Call "widgetActions->executeReports()"
Jul 20 18:51:35 symfony [info] {widgetActions} executeReports: module is widget
Jul 20 18:51:35 symfony [info] {widgetActions} executeReports: action is reports
Jul 20 18:51:35 symfony [info] {widgetActions} executeReports success:
我必須在這裏失去一個步驟。在URL中傳遞變量時(當然,在路由中指定變量),我們有這個工作,但由於各種原因,我們希望使用POST代替。
爲什麼我的POST參數無法在actions.class.php中訪問?
謝謝! JavaScript似乎沒有發送有效的POST請求。 – Ryan 2010-07-21 02:18:25
Ajax POST請求的正確標題是: xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset = UTF-8'); – Serg 2010-07-21 02:58:55
不知道什麼是更好的JavaScript命令? – Ryan 2010-07-21 19:42:14