jQuery Ajax返回"状态:0"只在某些情况下

时间:2015-07-22 00:58:50

标签: javascript jquery ajax xmlhttprequest mechanicalturk

我参与了亚马逊机械土耳其人的心理语言规范研究,参与者看到了一张照片,然后大声说出来。他们的声音通过HTML5的录音功能录制,录音上传到服务器。有三个相关文件:显示外部问题的php文件(external_question.php),提供所有javascript(controller.js)的js文件,以及接受文件上传的php文件(accept_upload.php)。

为实时服务器设置

external_question.php

#import <AGGeometryKit/AGGeometryKit.h>

UIView *view = ...; // create a view

// setting anchorPoint to zero
view.layer.anchorPoint = CGPointZero;
view.layer.transform = CATransform3DMakeTranslation(-view.layer.bounds.size.width * .5, -view.layer.bounds.size.height * .5, 0);

// setting a trapezoid transform
AGKQuad quad = view.layer.quadrilateral;
quad.tl.x -= 10; // shift top left x-value with 10 pixels
view.layer.quadrilateral = quad; // the quad is converted to CATransform3D and applied
为沙盒服务器设置

external_question.php

<form id="question_form" name="question_form" action="https://www.mturk.com/mturk/externalSubmit" method="post">

现在,由于一些奇怪的原因,每当我使用实时服务器时,在控制台中通过finalizeRecording()作为来自accept_upload的响应打印响应,读取responseText:&#34;&#34;,状态:0,statusText:&#34;错误&#34;。 (请参阅下面的函数和文件。)基本上,没有任何返回。

但是,当我使用沙盒服务器时,一切正常。文件已上传,我的回复看起来很正常:

  

readyState:4,responseText:&#34;页面已输入。<form id="question_form" name="question_form" action="https://workersandbox.mturk.com/mturk/externalSubmit" method="post"> 音频文件已成功处理...↵[size] =&gt; 540716↵)↵↵)↵<pre>&#34;,状态:200,statusText:&#34; OK&#34;

我很难过!当我将表单提交到一个URL时,什么可能导致我的Ajax请求完全失败,但是当我提交到不同的URL时,它会完美地工作?

相关文件和功能

controller.js (相关功能)

</pre>

accept_upload.php (整个文件)

function finalizeRecording( blob ) {
    var myFormData = new FormData();
    myFormData.append('audioFile', blob, 'rec_' + workerId + '_' + stimulusName + '_' + assignmentId + '.wav');

    $.ajax({
        url: 'accept_upload.php',
        type: 'POST',
        processData: false, // important
        contentType: false, // important
        dataType : 'json',
        data: myFormData,
        complete: function(result) {
            console.log(result);
            $('form').trigger('submit');
        }
    });;
}

1 个答案:

答案 0 :(得分:0)

跨域,您无法调用不是内容源的URI。不过,您可以通过CORSJSONP来解决此问题。

以下是我对此的一些回答:

JQuery JSON Calls To PHP WebService Always Runs "Error" Callback

jQuery AJAX cross domain