Что такое jQuery ajax эквивалентный этой HTML-форме? - PullRequest
2 голосов
/ 27 января 2010

Если есть HTML-форма, такая как

<form method="POST" action="http://.../file.php">
    <input type="text" name="data" id="data" />
    <input type="submit" />
</form>

Я хочу сделать ajax-запрос с jQuery, но я не хочу использовать невидимую форму для отправки этого. Но так или иначе я не заставляю это работать. Моя попытка была

$.ajax({
    type: "POST",
    url: "http://.../file.php",
    data: d,
    success: function(msg){
        alert( "Data Saved: " + msg );
    }
});

, где d содержит объект JSON, который я просто вставил бы в поле формы выше в виде открытого текста. Функция успеха выполняется, но я не получаю ответ от сервера (что означает, что что-то должно пойти не так: -)

Ответы [ 4 ]

2 голосов
/ 27 января 2010

Вам просто нужно создать объект json для отправки через

function postData (data) {
    $.ajax({
        type: "POST",
        url: "http://.../file.php",
        data: { data: data },
        success: function(msg){
            alert( "Data Saved: " + msg );
        }
    });
};

postData("xyz");

Или, если вы хотите сделать это более общим, вы можете сделать

function postData (data) {
    $.ajax({
        type: "POST",
        url: "http://.../file.php",
        data: data,
        success: function(msg){
            alert( "Data Saved: " + msg );
        }
    });
};

postData({input1: "x", input2: "y", input3: "z" });

Последний позволяет вам быть более гибким и не должен постоянно переписывать входы в AJAX.

2 голосов
/ 27 января 2010

Вы размещаете на одном домене?Ajax не работает междоменный.

0 голосов
/ 27 января 2010

Плагин jQuery Form поможет сделать ваш код СУХИМ.

<html> 
<head> 
    <script type="text/javascript" src="jquery-1.3.2.js"></script> 
    <script type="text/javascript" src="jquery.form.js"></script> 

    <script type="text/javascript"> 
        // wait for the DOM to be loaded 
        $(document).ready(function() { 
            // bind 'myForm' and provide a simple callback function 
            $('#myForm').ajaxForm(function() { 
                alert("Thank you for your comment!"); 
            }); 
        }); 
    </script> 
</head>
<body>
    <form id="myForm" action="comment.php" method="post"> 
        Name: <input type="text" name="name" /> 
        Comment: <textarea name="comment"></textarea> 
        <input type="submit" value="Submit Comment" /> 
    </form>
</body>

Дополнительные параметры доступны на их веб-сайте .

0 голосов
/ 27 января 2010

data должен быть набором пар ключ / значение для успешного выполнения почтового запроса. Вы не можете указать произвольный объект javascript, а также не можете просто вставить html из вашей формы в виде строки. Если d является чем-то отличным от заданной пары ключ / значение, ваш запрос выдаст ошибку.

Вот пример допустимого объекта данных:

var d = {foo:'bar',fizz:'buzz'};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...