sencha touch的ajax问题

时间:2011-05-20 17:28:43

标签: ajax sencha-touch extjs

我正在尝试使用sencha触摸框架中的ajax提交表单。这是一个简单的表单,询问用户的姓名,电子邮件地址和简短消息。然后,我想将数据发布到一个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");
    }
});

错误发生在第14583行的sencha触摸框架中,即

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

我刚刚开始学习Ext和sencha触摸,所以有人可以指出正确的方向吗?任何线程/教程/示例都将不胜感激。

提前致谢

2 个答案:

答案 0 :(得分:1)

也许您的服务器使用内容协商。在这种情况下,它尊重Request-Header-Parameter Accept ,在您的情况下为Accept: */*。因此,服务器发送您的脚本HTML或XML,这些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

答案 1 :(得分:0)

如果将Ajax请求更改为以下内容会发生什么。

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非常有用。

您确定要发送的var是否填充了数据?在我的应用程序中,我使用下面的代码从输入值中减去数据(略有不同);

formID.getValues().inputFieldID