Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Ajax и Json


Автор: JamesMorgan 30.1.2012, 12:03
Привет всем, помогите решить одну проблему, в общем задачая такая отравить запрос с помощью ajax на сервер и получить json ответ, дело  в том что обязательно надо указать параметры:

Цитата

cat => id - параметр каталога
fcn => name - название callback функции в которой будет передам json ответ


Когда я формирую запрос отравки то ответа не получаю, данные уходят но нечего не происходит:
Код

<script>   
function _next(form_id) {
new Ajax.Request('http://server.com//get.do?sc=js',
  {
  method:'get',
  parameters: $(form_id).serialize(true),
  onSuccess: function(transport, json){
      alert(json ? Object.inspect(json) : "no JSON object");
    } 
  });

} 
</script>
    <form method="post" action="">

        <p>
            <label>Каталог</label>
            <input id="cat" name="cat"type="text" value=""/>
        </p>
            <input type="hidden" name="fcn" value="fcn"/>
        </p>
        <p class="submit">
            <input type="submit" onclick="_next(this.form); return false;"/>
        </p>
    </form>
</body>
</html>


Когда данные отправляю нечего не получаю, а вот если я напрямую передам параметры:

Цитата

http://server.com//get.do?sc=js&cat=ruby&fcn=fcn

То получаю ответ который мне и нужен:
Цитата

fcn({"cat":"... .. .. ..."});       

Вопрос как мне в ajax описать название функции ???? потому что без указания callback функции ответа нет. Помогите кто чем может, использую Prototype.

Автор: $дмитрий 30.1.2012, 15:38
Цитата

Когда данные отправляю нечего не получаю

Через отладчик(напиример FireBug) нужно смотреть какой сформировался запрос
Предпологаю что параметр sc тоже следует передать через форму(пропиши его в input hidden)

Цитата

Вопрос как мне в ajax описать название функции

Вопрос не понятен

Автор: JamesMorgan 30.1.2012, 16:53
Посмотрел, данные передаются но не туда куда надо, Ajax не срабатывает проверил так:
Код

    <form method="get" action="http://server.com//get.do">
        <p>
            <label>Каталог</label>
            <input type="hidden" name="sc" value="js"/>
            <input id="cat" name="cat"type="text" value=""/>
        </p>
            <input type="hidden" name="fcn" value="fcn"/>
        </p>
        <p class="submit">
            <input type="submit" onclick="_next(this.form); return false;"/>
        </p>
    </form>


Перепроверил с Ajax и FireBug показывает что данные улетели но ответа нет
FireBug показывает:
Цитата

http://server.com/get.do?sc=js&cat=book&fcn=fcn


Но нечего не пиходит, вообще пустота.
Цитата

Вопрос не понятен 

Дело в том что в параметре fcn должна находится имя функции callback я так понимаю что без нее ответа не будет, только как мне ее обработать?

Понять не могу почему ajax не хочет ее обрабатывать  smile 

Автор: JamesMorgan 1.2.2012, 14:42
Посмотрел через FireBug почему то данные не уходят а точнее не выполняется GET запрос, пишет вместо GET вот это OPTIONS. Что не так то делаю????

Код

<script>   
function _next(form_id) {
new Ajax.Request('http://server.com/get.do?sc=js',
  {
    method:'get',
    requestHeaders: {Accept: 'application/json'},
    parameters: $(form_id).serialize(),
    onSuccess: function(transport) {
      var response = transport.responseText || "no response text";
      alert("Success! \n\n" + response);
  });
} 
</script>
    <form method="post" action="">
        <p>
            <label>Каталог</label>
            <input id="cat" name="cat"type="text" value=""/>
        </p>
            <input type="hidden" name="fcn" value="fcn"/>
        </p>
        <p class="submit">
            <input type="submit" onclick="_next(this.form); return false;"/>
        </p>
    </form>
</body>
</html>


Фаер баг говорит 
Цитата
OPTIONS get.do?sc=js&cat=book&fcn=fcn
 а если напрямую то тогда пишет
 
Цитата
GET get.do?sc=js&cat=book&fcn=fcn


Что не так я делаю??????? smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)