0

API 呼び出しを含む ajax 呼び出しを介してファイルをアップロードするフォームがあります。API が成功した場合、ファイルのリストを含むテーブルを更新したいと考えています。私はajaxページ内でjavascript関数を呼び出すことを考えていましたが、返されたのは関数が未定義であるということです.javascript関数の前にclarifications.jsを置くことでそれを修正しました.

フォームは次のとおりです (ページの上部に、javascript 関数を含む js ファイルを含めました)。

<div class='input_table_title'>Upload file:</div>
<div style='float:left;'>
<form name='upload_my_files' action='ajax/clarifications/handle_upload.php'   method='post' enctype='multipart/form-data' target='upload_target'>
<input type='file' name='file_upload' />
<input type='hidden' name='notification_id' value='<?php echo $value->NotifiNumber; ?>'  />
<input type='submit' value='Upload'>
</form>
<iframe id='upload_target' name='upload_target' src='' style='width:0;height:0;border:0px solid #fff;'></iframe>
</div>

handle_upload.phpで API 呼び出しを行い、ページの最後で php を閉じ、clarification.js を配置して関数を呼び出します。

<script src="(position)/clarifications.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
createTable("<?php echo $outcome ?>", "<?php echo $uploaded_filename ?>");
</script>

clarifications.jsファイルで関数を宣言します (前述のように、フォーム ページに js ファイルを含めました) 。

function createTable (result, filename) {

 if (result == 'success'){

  var success = document.getElementById('clarification_success');

  success.style.display = "block";
  success.innnerHTML = "File "+filename+" successfully uploaded.";

  // Update the list of uploads
  var list = document.getElementById('table_clarification');
  var myElement = document.createElement("td");
  myElement.innerHTML = filename;

  list.appendChild(myElement);
 }

 return true;

}

clarification_success は、成功メッセージを表示したい div です。table_clarification は、ファイル名がアップロードされた行を追加するテーブルの ID です

アップロードは成功しましたが、関数 createTable が定義されていません。編集:解決済み

私が抱えているもう 1 つの問題は、関数が ID "clarification_success" を見つけられないことです。これは、通常のページではなく で探しているためだと思います。私は正しいですか?はいの場合、どうすれば解決できますか?

注: 残念ながら、jQuery は使用できません。Javascript のみを使用してください。

4

1 に答える 1

2

私が正しく理解していれば、iframe コンテンツは別のページである必要があります。このページはサーバー上で動的に構築され、ポスト アンサーとしてクライアントに返されます。このページはおそらく<script src="(path)/clarifications.js"></script>ヘッダーに含まれている はずです

于 2013-10-28T13:33:40.873 に答える