動的ドキュメント プレビューアを作成しようとしています。ユーザーは、特定のドキュメント ヘッダー オプションを入力できます。アカウント情報に基づいて、動的ヘッダーを含むドキュメントが生成されます。最終的には完全な pdf をプレビューしたいのですが、現在はヘッダーだけに取り組んでいます。
私がやろうとしているのは、ユーザーが入力できるフォームを含むページを作成し、ボタンを押してヘッダーをプレビューすることです。
$.ajaxSetup({
type: 'POST',
timeout: 10000
});
$("#preview_header").click(function(){
var full_url = //appropriate URL
var preview_data = {
"wsid": "default",
"page": "default",
"banner_area1": "default",
"banner_area2": "default",
"banner_area3": "default",
"uid": "default",
"fid": "default",
"cid": "default",
"assignment_type": "default"
};
preview_data.wsid = $("#worksheet_picker").val();
preview_data.page = $("#page_picker").val();
preview_data.banner_area1 = $("#banner_area1").val();
preview_data.banner_area2 = $("#banner_area2").val();
preview_data.banner_area3 = $("#banner_area3").val();
preview_data.uid = $("#member_uid").val();
preview_data.fid = $("#family_id").val();
preview_data.assignment_type = 'family';
preview_data.cid = $("#class_id").val();
var JSONText = JSON.stringify( preview_data );
alert('Full JSON - ' + JSONText);
$.ajax({
async: true,
url: full_url,
data: { previewInfo : JSONText }, //Passes necessary form information
dataType: 'json',
success: function(output){
var reply = output;
if ( reply.status == "success" ){
$("#preview").attr("src", reply.image );
} else {
alert('Failed to create image preview of the assignment.');
}
}
});
});
私の知る限り、上記の方法はうまく機能しています。適切な Codeigniter ページにヒットし、ajax メソッドがハードコードされた画像を返すように設定されている場合、問題なく動作します。AJAX は適切にフォーマットされているように見えますが、念のため、フォームに対応する値を入力したときに出力されるものを次に示します。
Full JSON - {"wsid":"4","page":"1","banner_area1":"link1",
"banner_area2":"link2","banner_area3":"link3",
"uid":"1","fid":"1","assignment_type":"family"}
まず最初に、対応する ajax 応答のコントローラー メソッドで機能しているものから始めましょう。
$data = array(
'status' => 'success',
'image' => //static image link
);
$this->output->set_content_type('text/javascript;charset=UTF-8');
echo json_encode($data);
しかし、次のように変更しようとするたびに:
$preview_data = json_decode($this->input->post('previewInfo'));
//Got this one
mail('me@gmail.com', 'Start Email', 'Some email' );
//Empty email
mail('me@gmail.com', 'Dump Post', var_dump($_POST));
//Empty email
mail('me@gmail.com', 'Post data', var_dump($preview_data) );
//returns an email with 1 for body
mail('me@gmail.com', 'Post data', print_r($this->input->post()) );
//returns an email with 1 for body
mail('me@gmail.com', 'Post data',
print_r($this->input->post('previewInfo')) );
//returns an email with 1 for body
mail('me@gmail.com', 'Post data', print_r($preview_data) );
$data = array(
'status' => 'success',
'image' => //static image link
);
$this->output->set_content_type('text/javascript;charset=UTF-8');
echo json_encode($data);
変更されたものも静的データを返しません。そのため、post 配列が適切に初期化されていないように見えます。誰でもバグを見ますか?