1

我正在尝试使用 Mootools 发送一个简单的 ajax 发布请求,但我只收到标题中的错误消息,而且它似乎没有正确发送数据(请求被取消)。

这是html:

<form id="form_5" name="form_5" action="someajaxfile.php" onsubmit="jsfunction(this,5);return false;" method="post">....</form>

这是提交时调用的javascript函数:

function jsfunction(form,eventId) {
        var container = $('form_contents' + eventId);

        form.send({
            update: container,
            evalScripts: true,
            onComplete: function() {
                container.removeClass('ajax-loading');
            }
        });

    }

我试图向headers: {'X-Request': 'JSON'},发送函数添加类似的东西,但似乎没有任何东西可以改变错误。一件奇怪的事情是,在网络选项卡下的 chrome 中,我可以看到两个请求:

someajax.php
/somefolder
POST
302
Found
text/html
mootools.js:247
Script
354B
0B
2ms
2ms
2ms0


someajax.php
/somefolder
GET
(canceled)
Pending
http://localhost:8888/somefolder/someajax.php
Redirect
13B
0B
0ms
0.0 days

问题是:为什么我不能发送数据,会发生什么,为什么以及我的问题有什么好的解决方案?

4

2 回答 2

1

问题是:为什么我不能发送数据,会发生什么,为什么以及我的问题有什么好的解决方案?

您的问题是 Chrome+Local 和--allow-file-access-from-files限制的组合。

尝试:

  • 使用命令 --allow-file-access-from-files 在“安全”环境中在 chrome (dev) 中运行这些文件
  • 在另一个浏览器中运行您的文件
于 2012-08-21T12:13:42.747 回答
1

嗯在尝试了一些事情之后,我认为直接从表单元素发出“AJAX”请求是不可能的(但如果我错了,我想看看它是如何工作的例子 n_n)

通常我使用 Request 的一个实例(或者它的任何扩展:Request.JSON、Request.JSONP、Form.Request)。

我会这样做:

function myfunction(form){
    new Request({
      url:form.action,
      data:form,
      onSuccess:function(result){
          console.log(result);
      }
    }).send();
    return false;
};

这里有一个工作示例:http: //jsfiddle.net/pCUKe/

于 2012-08-21T12:27:52.533 回答