проблема ajax с сенсорным сенча - PullRequest
1 голос
/ 20 мая 2011

Я пытаюсь отправить форму, используя ajax в рамках сенсорного интерфейса sencha.Это простая форма, которая запрашивает имя пользователя, адрес электронной почты и краткое сообщение.Затем я хочу опубликовать данные в php-скрипте, который просто отправляет мне данные по электронной почте.

Проблема, с которой я сталкиваюсь, заключается в том, что при попытке отправить форму я получаю следующую ошибку: «SyntaxError: Невозможно проанализировать строку JSON»

Код для отправки запроса выглядит следующим образом:

var userName = name.getValue();
var userEmail = email.getValue();
var userMessage = message.getValue();
Ext.Ajax.request({
    url:'path/to/phpfile.php',
    jsonData:{"name":userName, "email":userEmail, "message":userMessage},
    method:"POST",
    success:function(){
        alert("Success!");
    },
    failure:function(){
        alert("Error");
    }
});

Ошибка возникает в рамке касания sencha в строке 14583, то есть

Ext.util.JSON = {
    encode: function(o){
        return JSON.stringify(0);
    },
    decode: function(s){ 
        return JSON.parse(s); //this is line 14583
    }
};

Я только начинаю изучать касания Ext и sencha, так что кто-то может указать, пожалуйста, справанаправление здесь?Любые темы / учебники / примеры будут с благодарностью.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Возможно, ваш сервер использует согласование содержимого.В этом случае он учитывает параметр-заголовок запроса Accept , который в вашем случае равен Accept: */*.Таким образом, Сервер отправляет ваш Сценарий HTML или XML, который не может быть прочитан как JSON.

Измените свой Код на следующее:

Ext.Ajax.setDefaultHeaders({
    'Accept': 'application/json'
});
Ext.Ajax.request({
    url:'path/to/phpfile.php',
    params:{"name":userName, "email":userEmail, "message":userMessage},
    method:"POST",
    success:function(){
        alert("Success!");
    },
    failure:function(){
        alert("Error");
    }
});

Источник: http://www.sencha.com/learn/legacy/Manual:RESTful_Web_Services

0 голосов
/ 21 мая 2011

Что произойдет, если вы измените Ajax Request на следующее.

Ext.Ajax.request({
        url: 'php/file.php',
        method: 'post',
        params: { id: idvar, data1: Ext.encode(schouw), data2: Ext.encode(opmerkingen) },
        success: function(response) {
             //Reponse
   }
});

В моем собственном приложении это прямое кодирование данных в JSON прекрасно работает.

Вы уверены, что отправляемая вами переменная заполнена данными? В моем приложении я использую приведенный ниже код для вычитания данных из входных значений (немного отличающихся);

formID.getValues().inputFieldID
...