我正在尝试使用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触摸,所以有人可以指出正确的方向吗?任何线程/教程/示例都将不胜感激。
提前致谢
答案 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