web-dev-qa-db-ja.com

コンポーネントのajax呼び出しに関する問題

Joomlaコンポーネントを開発しています。ドラッグアンドドロップアップローダーをajaxで追加しました。ファイルがアップロードされると、確認メールが送信されます。 $id = $app->input->getInt('id');を使用してデータベースの適切な項目を取得します。これは機能しますが、ajax呼び出しが完了すると、変数$idnullに設定されているため、メールでは$customers->namenullです。 ajax-callの後にモデル全体がリロードされるのはなぜですか?

コントローラーメソッドを呼び出します:

Ajaxコール

$.ajax({
    cache: false,
    url: "index.php?option=com_customercenter&task=mailAfterUpload&tmpl=component",
    dataType: "json",
    formData: {"companyID":"companyID"},
    success: function(data) {
        for(var i=0;i<data.length;i++) { 
            obj.createProgress(data[i]["name"],data[i]["path"],data[i]["size"]);
        }
    }
});

コントローラ

public function mailAfterUpload() {
    $model = $this->getModel();
    $response = $model->sendEmailAfterUpload();
}

型番

public function sendEmailAfterUpload() {
    $customers = $this->getCustomercenterData();

    $mailer = JFactory::getMailer();
    $config = JFactory::getConfig();
    $sender = array( 
        $config->get( 'mailfrom' ),
        $config->get( 'fromname' ) 
    );

    $mailer->setSender($sender);

    $user = JFactory::getUser();
    $recipient = $sender;

    $mailer->addRecipient($recipient);

    $body = "Der Kunde: <b>" . $customers->name . "</b> hat neue Daten übermittelt<br>Ordner '" . $customers->upload_folder . "' checken" ;
    $subject = $customers->name . " hat neue Daten übermittelt";
    $mailer->isHTML(true);
    $mailer->Encoding = 'base64';
    $mailer->setSubject($subject);
    $mailer->setBody($body);

    $send = $mailer->Send();
    if ( $send !== true ) {
        echo 'Error sending email: ' . $send->__toString();
    } else {
        echo 'Mail sent';
    }
}

SQLクエリのモデル化

$app = JFactory::getApplication('site');
$id = $app->input->getInt('id');
1
onclesam

デフォルトでは、各HTTPリクエストは独立しています。各呼び出しですべてのパラメーターを再度送信する必要があります。

または、クライアントがセッションCookieを保持できる場合は、サーバー側の変数をユーザーセッションに保存して、httpリクエスト間の状態を保持できます。

$session = JFactory::getSession();
$session->set('myId', $myId);
...
$session = JFactory::getSession();
$myId = $session->get('myId');
2
Anibal