我正在向右移动,并使用表格进行数字对话。我最新添加的是测试Ajax请求。我的代码没有工作,所以我剪切并粘贴了dojo website article的代码。当我将它嵌入我的工作dijit按钮时,我收到错误:
'未定义'不是一个功能(评估' request.post')
这是我复制的内容:
require(["dojo/request"], function(request){
request.post("post-content.php", {
data: {
color: "blue",
answer: 42
},
headers: {
"X-Something": "A value"
}
}).then(function(text){
console.log("The server returned: ", text);
});
});
这是我的剧本:
<script>
require(["dojo/dom",
"dijit/Dialog",
"dijit/form/Form",
"dijit/form/TextBox",
"dijit/form/ValidationTextBox",
"dijit/form/Textarea",
"dijit/form/Button",
"dojox/validate/web",
"dojo/request",
"dojo/domReady!"],
function(dom, Dialog, Form, TextBox, ValidationTextBox, TextArea, Button, request){
alertDialog = new Dialog({
title: "Email Result",
content: "<p>No Content</p>",
sytle: "width 30em"
});
emailDialog = new Dialog({
title: "Email Form",
content: dom.byId("emailFormHTML").textContent,
style: "width: 50em"
});
emForm = new Form({
/*onSubmit: function(){
return this.validate();
}*/
},"contact-form");
toText = new TextBox({
readOnly: "readOnly",
value: "Staff"
},"to");
nameText = new ValidationTextBox({
placeholder: "Your Name",
required: "true",
missingMessage: "We'd like to know who you are."
},"name");
emailText = new ValidationTextBox({
placeholder: "Your email",
validator: dojox.validate.isEmailAddress,
invalidMessage: "This is not a valid email address!"
},"email");
messageText = new TextArea({
placeholder: "Your message"
},"message");
sendBtn = new Button({
label: "Send",
onClick: function(){
if (emForm.validate() == true){
emailDialog.hide();
request.post("send-message.php", {
data: {
color: "blue",
answer: 42
},
headers: {
"X-Something": "A value"
}
}).then(function(text){
console.log("The server returned: ", text);
});
}
}
},"submit-btn");
});
require(["dojo/dom",
"dijit/form/Button",
"dojo/domReady!"],
function(dom, Button)
{
var showEmailBtn = new Button({
onClick: function(){
toText.set("value","Executive Director");
emailDialog.show(); } },
"showEmail");
});
</script>
我唯一改变的是php文件的名称。我觉得它有功能标题,但我无法看到它。
更新
我认为我解决了一个问题并引发了另一个问题。我将函数标题更改为:
require(["dojo/dom",
"dojo/request",
"dojo/dom-form",
"dijit/Dialog",
"dijit/form/Form",
"dijit/form/TextBox",
"dijit/form/ValidationTextBox",
"dijit/form/Textarea",
"dijit/form/Button",
"dojox/validate/web",
"dojo/domReady!"],
function(dom, request, domForm, Dialog, Form, TextBox, ValidationTextBox, TextArea, Button ){
消除了第一个错误。如果这是声明标题的正确方法,我想知道规则是什么。显然事情必须是某种顺序。
现在我收到了错误:
网络问题
无法加载资源:服务器响应状态为500(内部服务器错误)
这是在Safari中。我在同一网站上有另一个测试页面,可以很好地完成AJAX。
当我在Firefox中尝试时,我在控制台上遇到了这个错误:
[23:24:20.081]未声明HTML文档的字符编码。如果文档包含US-ASCII范围之外的字符,则文档将在某些浏览器配置中使用乱码文本进行渲染。必须在文档或传输协议中声明页面的字符编码。 @ http://test.loc/dojodialog/index.php
是否必须有正确格式化的标头?我没有在任何例子中看到它。
答案
哑编程错误。这是php文件中的错误。我复制了另一个php文件并编辑了我不需要的东西。我没有注意到我留下了一个结束括号,因此php执行失败了。现在我知道如果我收到500错误,请查看我的服务器端代码。
答案 0 :(得分:0)
500错误可能有多种原因。其中之一是被调用的服务器程序有编程错误而失败。在我的情况下,我在删除额外代码时留下了一个结束括号。