Slyweb
На разработку сайта! Скидки 50%!

Помогите найти ошибку

Вы можете задавать любые вопросы по jQuery.

Помогите найти ошибку

Сообщение Pez » 20 авг 2010, 23:11

Здравствуйте. С jquery и вообще с javascript работаю можно сказать в первые и поэтому не все еще понимаю. Прошу подсказать как сделать следующее - Есть html страничка с двумя формами и php скрипт. Необходимо аяксом отправить данные из формы, получить ответ от php скрипта (скрипт всегда возвращает xml документ), полученный xml ответ распрсить и вывести на той же html страничке. Для отправки html формы пытался использовать плагин jquery forms, но что-то не получается - через фаербаг видно, что пост запрос отправляется, но ответ приходит пустой.

Код: Выделить всё
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Локальный хостинг изображений</title>
        <link rel="stylesheet" type="text/css" href="css/reset-min.css" media="all" />
        <link rel="stylesheet" type="text/css" href="css/main.css" media="all" />
        <link href="css/jquery-ui.css" rel="stylesheet" type="text/css"/>
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script type="text/javascript" src="js/jquery-min-ui.js"></script>
        <script type="text/javascript" src="js/jquery.forms.js"></script>
        <script>
            $(document).ready(function() {
                $("#tabs").tabs();
                $("form#local_upload_form").submit(function() {
                    var user_file_loc = $('#user_file_loc').attr('value');
                    $.ajax({
                        type: "POST",
                        dataType: "xml",
                        url: "imaging.php",
                        data: "file="+ user_file_loc,
                        success: function(xml){
                            var dir = $(xml).find('dir').text();
                            alert(dir);
                        }
                    });
                    return false;
                });
                $("form#inet_upload_form").submit(function() {
                    var text = $(this).val();
                    alert(text);
                    return false;
                    $.ajax({
                        type: "POST",
                        dataType: "xml",
                        url: "imaging.php",
                        data: "text="+ text,
                        success: function(xml){
                            var dir = $(xml).find('dir').text();
                            alert(dir);
                        }
                    });
                    return false;
                });
            });
        </script>
    </head>
</head>
<body>
    <div id="ajax_error">
    </div>
    <div id="tabs">
        <ul>
            <li><a href="#local_upload"><span>Загрузка с компьютера</span></a></li>
            <li><a href="#inet_upload"><span>Загрузка из интернета</span></a></li>
        </ul>
        <div id="local_upload" align="center">
            <form method="post" enctype="multipart/form-data" id="local_upload_form">
                <br />
                <input type="file" name="user_file_loc" id="user_file_loc" name="user_file_loc" />
                <input type="submit" name="local_user_file" value="Загрузить" />
            </form>
        </div>
        <br />
        <div id="inet_upload" align="center">
            <form method="post" action="imaging.php" enctype="multipart/form-data" id="inet_upload_form">
                <br />
                <input type="text" name="user_file_url" id="user_file_url" />
                <input type="submit" name="inet_user_file" value="Загрузить" />
            </form>
        </div>
        <br />
        <div id="upload_progress">
            <img src="images/ajax-loader.gif" style="visibility: hidden;" id="progress_img" align="center" />
        </div>
        <br />
        <div id="result_wrapper">
        </div>
    </div>
</body>
</html>


PS: буду благодарен если подскажете как это сделать на чистом jquery
Pez
 
Сообщения: 1
Зарегистрирован: 18 авг 2010, 02:31

Re: Помогите найти ошибку

Сообщение admin » 22 авг 2010, 22:12

У вас не правильный jquery, этот пойдет:

Код: Выделить всё
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Локальный хостинг изображений</title>
            <link rel="stylesheet" type="text/css" href="css/reset-min.css" media="all" />
            <link rel="stylesheet" type="text/css" href="css/main.css" media="all" />
            <link href="css/jquery-ui.css" rel="stylesheet" type="text/css"/>
            <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

            <script>
                $(document).ready(function() {
                    $("form#local_upload_form").submit(function() {
         alert($('#user_file_loc').attr('value'))
                        var user_file_loc = $('#user_file_loc').attr('value');
                        $.ajax({
                            type: "POST",
                            url: "imaging.php",
                            data: "file="+ user_file_loc,
                            success: function(xml){
                                var dir = $(xml).find('id').text();
                                alert(dir);
                            }
                        });
                        return false;
                    });
                    $("form#inet_upload_form").submit(function() {
                        var text = $('input[name=user_file_url]').val();
                        alert(text);
                        $.ajax({
                            type: "POST",
                            url: "imaging.php",
                            data: "text="+ text,
                            success: function(xml){
                                var dir = $(xml).find('id').text();
                                alert(dir);
                            }
                        });
                        return false;
                    });
                });
            </script>
        </head>
    </head>
    <body>
        <div id="ajax_error">
        </div>
        <div id="tabs">
            <ul>
                <li><a href="#local_upload"><span>Загрузка с компьютера</span></a></li>
                <li><a href="#inet_upload"><span>Загрузка из интернета</span></a></li>
            </ul>
            <div id="local_upload" align="center">
                <form method="post" enctype="multipart/form-data" id="local_upload_form">
                    <br />
                    <input type="file" name="user_file_loc" id="user_file_loc" name="user_file_loc" />
                    <input type="submit" name="local_user_file" value="Загрузить" />
                </form>
            </div>
            <br />
            <div id="inet_upload" align="center">
                <form method="post" action="imaging.php" enctype="multipart/form-data" id="inet_upload_form">
                    <br />
                    <input type="text" name="user_file_url" id="user_file_url" />
                    <input type="submit" name="inet_user_file" value="Загрузить" />
                </form>
            </div>
            <br />
            <div id="upload_progress">
                <img src="images/ajax-loader.gif" style="visibility: hidden;" id="progress_img" align="center" />
            </div>
            <br />
            <div id="result_wrapper">
            </div>
        </div>
    </body>
    </html>


Но при условии что php:

Код: Выделить всё
<?
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

header('Last-Modified:' .gmdate('D,d M Y H:i:s'). 'GMT');

header('Cache-control:no-cache, must-revalidate');

header('Pragma:no-cache');

header('Contetnt-type: text/xml; charset=utf-8;');
if($_POST['file'])
{
$world = 'Привет файл';
}
else
{
$world = 'Привет текст';
}
$response = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';

$response .= "<response>";

$response .= '<id>'.$world.'</id>';

$response = $response. '</response>';
echo $response;
?>

Вы не правильно пытаетесь загружать файлы, в том плагине наверняка был скрытый iframe, так как вроде бы опка не выдумали способы ajax загрузки файлов не через iframe. А Вы его удалили.
dataType: "xml" так же не к чему использовать, такой тип jquery сам распознаёт. Читайте подробнее об этом в http://slyweb.ru/jquerydoc/jQuery-ajax-options.php. Подробней ничеого не могу сказать, но на этом закончу, поскольку на Ваш вопрос о том как получить xml из php ответил. Если будут дополнительные вопросы про загрузку рад буду помочь.
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: Помогите найти ошибку

Сообщение admin » 22 авг 2010, 22:17

На сайте появилась последняя версия руководства - jQuery 1.4.2. В ней описываются многие новые функции и изменения к старым методам. Вам посоветую почитать про метод jquery() и про $.ajax().
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02


Вернуться в Вопросы по jQuery

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron