Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перестала работать форма jQuery Form Plugin
 
 автор: web777   (11.03.2012 в 04:20)   письмо автору
 
 

как только обновился до версии - version: 3.02 (07-MAR-2012) так сразу форма не стала работать, если вернутся обратно к предыдущей версии - version: 2.92 (22-NOV-2011), форма работает.

Ниже приведу отрывок из книги(HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера 3-е издание) по которой я делал саму форму.

сразу скажу, что форма отказалась работать с новой версией когда я передаю данные таким образом

<textarea> 
Код скрипта или JSON-объект
</textarea>


если убрать textarea , работает нормально, но файл при этом не загружается. А ведь весь смысл в том, что файл загружается только при <textarea>

теперь браузер стал выдавать такую ошибку - parsererror - SyntaxError: JSON.parse: unexpected character

Привожу отрывок из книги.



Загрузка файлов на сервер

Отличительной особенностью модуля jQuery Form является возможность отправки файлов на сервер без перезагрузки страницы. Загрузка файлов выполняется не с помощью технологии AJAX, а путем создания скрытого тега <iframe>. Однако следует учитывать, что если файл не выбран пользователем, то запрос будет сделан с помощью AJAX. Ответ сервера может быть в формате HTML, XML, JSON или в виде скрипта на JavaScript. В двух последних случаях код следует размещать внутри тега <textarea>:

Код HTML:
<textarea> 
Код скрипта или JSON-объект
</textarea>


Обратите внимание
Ответ в формате XML не поддерживается браузером Safari.

Рассмотрим загрузку файлов на примере. Создадим файл index.php, который будет передавать файл скрипту ajax.php и получать ответ сервера в различных форматах.

Содержимое файла index.php


Код HTML:

<html>
<head>
<title>jQuery Form Plugin. Загрузка файлов на сервер</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="jquery-1.3.2.js" type="text/javascript"></script>
<script src="jquery.form.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
var frmReturnType = "";
$(document).ready(function() {
   $("#frm").ajaxForm({
      beforeSubmit: function(dataFrm, obj, option) {
         frmReturnType = $("#returnType").val();
         option.dataType = frmReturnType;
         $("#div1").html("Загрузка...");
         $("#go").enable(false); // Деактивируем кнопку
      },
      success: function(d) { // При отсутствии ошибки
         if (frmReturnType == "html") $("#div1").html(d);
         else if (frmReturnType == "xml") {
            $("#div1").text($("otvet", d).text());
         }
         else if (frmReturnType == "json") {
            $("#div1").text(d.otvet);
         }
         $("#go").enable(true); // Делаем кнопку активной
      },
      error: function() {
         $("#div1").html("Произошла ошибка");
         $("#go").enable(true); // Делаем кнопку активной
      },
      resetForm: true // Устанавливаем значения по умолчанию
   });
});
//-->
</script>
</head>
<body>
<form action="ajax.php" id="frm" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="300000">
<input type="file" name="file_name" id="file_name"> 
Ответ в формате: 
<select id="returnType" name="returnType">
<option value="html" selected>html</option>
<option value="xml">xml</option>
<option value="json">json</option>
<option value="script">script</option>
</select>
<input type="submit" name="go" id="go" value="Загрузить файл">
</form>
<b>Ответ сервера:</b><br>
<div id="div1"></div>
</body>
</html>




Содержимое файла ajax.php
Код PHP:
<?php
// Запрет кеширования
header("Expires: Sun, 27 May 2007 01:00:00 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
if (!isset(
$_POST['returnType'])) {
   
header('Content-Type: text/html; charset=utf-8');
   exit(
'Форма не отправлена');
}
$msg '';
$ok true;
if (isset(
$_SERVER['HTTP_X_REQUESTED_WITH']) 
   && 
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
   
// Запрос выполнен с помощью AJAX. Файл не выбран
   
$msg 'Файл не выбран';
   
$ok false;
}
else {
   if (!isset(
$_FILES['file_name'])) $msg 'Файл не загружен';
   elseif (
$_FILES['file_name']['error'] == 0
      
&& $_FILES['file_name']['size'] > 
      
&& $_FILES['file_name']['size'] < 300000) {
      
$path "C:\\Apache\\htdocs\\";
      
$path .= basename($_FILES['file_name']['name']);
      
$tmp $_FILES['file_name']['tmp_name'];
      if (@
move_uploaded_file($tmp$path)) {
         
$msg 'Файл успешно загружен';
      }
      else 
$msg 'Ошибка при копировании файла';
   }
   else 
$msg 'Ошибка при загрузке. Код: ' $_FILES['file_name']['error'];
}
switch (
$_POST['returnType']) {
   case 
"xml"// Ответ в формате XML
      
header('Content-Type: text/xml; charset=utf-8');
      echo 
'<?xml version="1.0" encoding="utf-8" ?>'"\n";
      echo 
'<ajax><otvet>' $msg '</otvet></ajax>';
      break;
   case 
"json"// Ответ в формате JSON
      
if (!$ok) {
         
header('Content-Type: text/javascript; charset=utf-8');
         echo 
'{ "otvet": "' $msg '" }';
      }
      else {
         
header('Content-Type: text/html; charset=utf-8');
         echo 
"<textarea>\n";
         echo 
'{ "otvet": "' $msg '" }';
         echo 
"</textarea>\n";
      }
      break;
   case 
"script"// Ответ в виде скрипта
      
if (!$ok) {
         
header('Content-Type: text/javascript; charset=utf-8');
         echo 
'alert("' $msg '");';
         echo 
'$("#div1").text("' $msg '");';
      }
      else {
         
header('Content-Type: text/html; charset=utf-8');
         echo 
"<textarea>\n";
         echo 
'alert("' $msg '");';
         echo 
'$("#div1").text("' $msg '");';
         echo 
"</textarea>\n";
      }
      break;
   default: 
// Ответ в формате HTML
      
header('Content-Type: text/html; charset=utf-8');
      echo 
$msg;
      break;
}
?>



скажите, какие изменения произошли в новой версии jQuery Form что теперь нельзя оборачивать код json внутри <textarea>
?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования