来自FirefoxOS的JQuery AJAX调用属于错误部分,但它确实可以正常工作

时间:2014-08-14 13:13:07

标签: php jquery ajax firefox-os

我的任务很简单,我在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';

2 个答案:

答案 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;