| 
 Как передать и получить ответ от сервера? здравствуйте, пытаюсь сделать отправку данных в месте с файлом, всё отправляются нормально, но решил сделать сообщение с сервера клиенту, об ошибке или об успешной передаче, собственно вот код <script src="jquery-1.4.2.min.js" type="text/javascript"></script> <script src="jquery.form.js" type="text/javascript"></script> 
<script type="text/javascript">
<!--
$(document).ready(function() {
   $("#frm").ajaxForm({
      // dataType: "json",
      beforeSubmit: function(dataFrm, obj, option) {
         $("#result_load").show();
         $("#result_load").html("Загрузка...");
         $("#go").enable(false); // Деактивируем кнопку
      },
      success: function(data){
      var res = JSON.parse(data);
                        if (res['err']=='1'){
                               $("#result_load").hide();
                               $("#result").html(res['msg']);
                               $("#go").enable(true); // Делаем кнопку активной
                        }else{
                               $("#result_load").hide();
                               $("#result").html(res['msg']);
                               $("#go").enable(true); // Делаем кнопку активной
                        }
      },
      clearForm: true // Устанавливаем значения по умолчанию
   });
});
//-->
</script>
<div id="result_load"></div> <form action="upload.php" id="frm" method="POST" enctype="multipart/form-data"> <input type="text" name="txt1"><br> <input type="text" name="txt2" value="Текст"><br> <input type="hidden" name="MAX_FILE_SIZE" value="30000000"> <input type="file" name="file_name"> <input type="submit" name="go" id="go" value="Загрузить файл"> </form> <b>Ответ сервера:</b><br> <div id="result"></div> 
<?php
 header('Content-Type: text/html; charset=utf-8');
 $res = array();
 if($_POST['txt1'] == ''){
    $res['msg'][] = 'Поле txt1 не заполнено!';
 }
 if($_POST['txt2'] == ''){
    $res['msg'][] = 'Поле txt2 не заполнено!';
 }
 if (!isset($_FILES['file_name']))
 {
      $res['msg'][] = 'Файл не выбран';
 }elseif($_FILES['file_name']['error'] == 0 && $_FILES['file_name']['size'] > 0 && $_FILES['file_name']['size'] < 30000000) {
      $path = "C:/wamp/www/jquery/form/";
      $path .= basename($_FILES['file_name']['name']);
      $tmp = $_FILES['file_name']['tmp_name'];
      if (!@move_uploaded_file($tmp, $path))
      {
          $res['msg'][] = 'Ошибка при копировании файла';
      }
 }else{
      $res['msg'][] = 'Ошибка при загрузке. Код: ' . $_FILES['file_name']['error'];
 }
 $output = '';
 $res2 = array();
 if( @sizeof($res['msg']) > 0 ){
   foreach(@$res['msg'] as $index => $val)
   {
      $output .= $val.'<br>';
   }
    $res2['msg'] = $output;
    $res2['err'] = '1';
 }else{
    $res2['msg'] = 'Даные были сохранены успешно';
    $res2['err'] = '0';
 }
  echo '{"msg":"'.$res2['msg'].'","err":"'.$res2['err'].'"}';
?>
проверил в FireFox 3.6 и Chrome всё работает нормально, а в IE8 выдаёт такую ошибку Код: Сообщение: 'JSON' - определение отсутствуетв опере 10 выдаёт Код: {"msg":"Поле txt1 не заполнено!<br>Поле txt2 не заполнено!<br>","err":"1"}каким образом определить JSON то что просит IE сделать? ещё, если убераю коментарии в коде JS в этой строчке // dataType: "json", то но водном браузере не работает | 
| 
 отвечаю сам на свой же вопрос) нужно заменить эту строчку var res = JSON.parse(data); на эту var res = eval('(' + data + ')'); или на эту var res = jQuery.parseJSON(data); сделал последний вариант, вроде как parseJSON хвалят больше ежели eval Теперь хотелось всё это обвернуть в одну функцию как то так function myAjaxForm(id) { .. выше упомянутый код .. } где в качестве аргумента id в функции указываем id формы, тоесть то что указывается тут <form action="upload.php" id="frm" method="POST" enctype="multipart/form-data"> эта часть id="frm" т.к. функцию планирую использовать для много форм, и чтобы каждый раз не копировать по несколько раз для каждой формы, хотелось одну функцию для всех, просто передавая id формы | 
| 
 по пытался сделать таким образом, весь js код поместил в функцию 
function myAjaxForm(id) {
...
}
также в js коде изменил это $("#frm").ajaxForm({ на это $("#"+id).ajaxForm({ всё остальное оставил без изменений а в HTML форме изменил так 
<form action="upload.php" id="frm" method="POST" enctype="multipart/form-data">
<input type="submit" name="go" id="go" onclick="myAjaxForm('frm');" value="Загрузить файл">
таким образом хотелось бы при нажатии на кнопку, сработала функция myAjaxForm которой был передан id формы что прописано в теге <form id="frm"> проверил в FireFox работает нормально также в Chrome, а вот в IE8 неработает, выдаёт такую ошибку Код: Строка: 28Подскажите плиз. что не так делаю? | 
| 
 Цитата: 
 jQuery - тоже не решение, не все хотят и могут с ним работать проблема решается добавлением правильного !DOCTYPE в документ | 
| 
 Цитата: 
 | 
| 
 vladkras - JavaScript клиентский язык и работает на стороне клиента!)) Улыбнуло!) | 
| 
 Цитата: 
 JSON::Вопросы безопасности никто не отменял, речь идет об обработке данных с сервера, вредоносный код помещается именно в них, чтобы выполнить на клиенте, учите матчасть Цитата: 
 и вообще http://api.jquery.com/jQuery.parseJSON/ | 
| 
 vladkras, давайте вы приведёте примерный сценарий атаки на сайт, который использует eval. | 
| 
 Цитата: 
 | 
| 
 И причём здесь eval? | 
| Часовой пояс GMT +3, время: 20:48. |