Javascript Dojo Ajax示例代码在Dijit按钮中失败,出现500个服务器错误

Javascript Dojo Ajax示例代码在Dijit按钮中失败,出现500个服务器错误,javascript,ajax,dojo,Javascript,Ajax,Dojo,我一直在努力让我的数字对话框和表单一起工作。我最近添加了一个测试Ajax请求。我的代码不起作用,所以我从一个文件中剪切并粘贴了代码。当我将其嵌入我的工作dijit按钮时,我得到错误: “undefined”不是函数(评估“request.post”) 这是我复制的: require(["dojo/request"], function(request){ request.post("post-content.php", { data: {

我一直在努力让我的数字对话框和表单一起工作。我最近添加了一个测试Ajax请求。我的代码不起作用,所以我从一个文件中剪切并粘贴了代码。当我将其嵌入我的工作dijit按钮时,我得到错误:

“undefined”不是函数(评估“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>
这消除了第一个错误。如果这是声明标题的正确方法,我想知道规则是什么。显然,事情一定是井然有序的

现在我得到一个错误:

网络问题

加载资源失败:服务器响应状态为500(内部服务器错误)

这是在狩猎中。我在同一个网站上有另一个测试页面,可以很好地使用AJAX

当我在Firefox中尝试时,在控制台上出现了以下错误:

[23:24:20.081]未声明HTML文档的字符编码。如果文档包含US-ASCII范围之外的字符,则在某些浏览器配置中,文档将呈现乱码文本。页面的字符编码必须在文档或传输协议中声明。@

是否必须有一个格式正确的标题?我在任何例子中都没有看到

回答


愚蠢的编程错误。这是php文件中的一个错误。我复制了另一个php文件并编辑掉了我不需要的内容。我没有注意到我留下了一个结束括号,因此php执行失败。现在我知道,如果出现500错误,我需要查看服务器端代码。

500错误可能有几个原因。其中之一是被调用的服务器程序出现编程错误并失败。在我的例子中,我在删除额外代码时留下了一个结束括号

    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 ){