我参与了亚马逊机械土耳其人的心理语言规范研究,参与者看到了一张照片,然后大声说出来。他们的声音通过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');
}
});;
}
答案 0 :(得分:0)
跨域,您无法调用不是内容源的URI。不过,您可以通过CORS
或JSONP
来解决此问题。
以下是我对此的一些回答:
JQuery JSON Calls To PHP WebService Always Runs "Error" Callback