我的任务很简单,我在FirefoxOS应用程序中使用jQuery AJAX将字符串发送到服务器。收到数据但仍然没有进入成功功能并进入错误功能。
以下是清单中的细分:
"permissions": {
"systemXHR": {
"description": "Required to make Ajax Calls over the Network"
}
},
"type": "privileged"
我的Ajax功能:
$('#btn_save_server').click(function() {
contacts = 'a line of text';
$.ajax({
type: "POST",
url: 'http://localhost/save_contacts.php',
xhrFields: { mozSystem: true },
data: { contacts: contacts },
beforeSend: function() {
console.log( contacts );
},
success: function(data) {
alert('done');
},
error: function(request, status, error) {
alert('error');
console.log( request );
console.log( status );
console.log( error );
}
});
});
我的服务器:
<?php
$contacts = $_POST['contacts'];
$contacts = json_encode( $contacts );
file_put_contents( 'contacts.txt', $contacts );
echo 'Finished';
答案 0 :(得分:1)
我能够通过搜索互联网并在@JasonWeathersby提供的链接的帮助下解决问题
清单和服务器代码是相同的。所需的更改是在调用$.ajax()
方法之前需要进行一些设置:
$.ajaxPrefilter(function(options) {
if (options.xhrConstructParam) {
options.xhr = function() {
return new window.XMLHttpRequest(options.xhrConstructParam);
}
}
});
//for FirefoxOS (require "mozSystem" param in AJAX calls)
var xhrConstructParam = null;
xhrConstructParam = {
mozSystem: true
};
//default settings for AJAX methods
$.ajaxSetup({
xhrConstructParam: xhrConstructParam
});
由于mozSystem
已提供,因此$.ajax()
方法不再需要{<1}}:
$.ajax({
type: "POST",
url: 'http://www.local/mobile-sync/save_contacts.php',
data: { contacts: contacts },
beforeSend: function() {
},
success: function(data) {
alert('done');
},
error: function(request, status, error) {
alert('error: ' + request.responseText);
}
});
答案 1 :(得分:0)
您不会将结果返回给Ajax。 PHP文件末尾没有return语句。
<?php
$contacts = $_POST['contacts'];
$contacts = json_encode( $contacts );
file_put_contents( 'contacts.txt', $contacts );
echo 'Finished';
return $contacts;