在Javascript中返回POST AJAX值

时间:2016-06-24 21:06:32

标签: javascript php ajax

我正在尝试创建一个获取两个参数的Javascript函数,URLdata,将其发布到PHP并返回服务器的response 而不使用jQuery或任何图书馆(Source)

function post(URL, data) {
    return new Promise(function(resolve, reject) {
        var req = new XMLHttpRequest();
        req.open('POST', URL, true);
        req.setRequestHeader('Content-type',
            'application/x-www-form-urlencoded');
        req.onload = function() {
            if (req.status == 200) {
                resolve(req.response);
            } else {
                reject(Error(req.statusText));
            }
        };
        req.onerror = function() {
            reject(Error('Network Error'));
        };
        req.send(data);
    });
}

<?php
if ( isset($_POST['data']) ) {
echo json_encode(array("Hey {$_POST['data']}" ));
} else {
echo json_encode(array("Error"));
}
?>

到目前为止一直很好,这就是我如何处理它。

function handle(URL, data) {
post(URL, data).then(function(response) {
    return response;
}, function(error) {
    return error;
});
}

但是,这总是返回undefined。有趣的是,如果我尝试console.log(response)它可以正常工作。

我希望能够做alert(handle(URL, data));

之类的事情

这不可能吗?如果是,我怎么能绕过它?

1 个答案:

答案 0 :(得分:0)

我最终修改了我的脚本以改为使用回调。

var AJAX = {
    get: function(a, b) {
        var c = new XMLHttpRequest();
        c.onreadystatechange = function() {
            if (c.readyState == 4 && c.status == 200) {
                b(c.responseText);
            }
        };
        c.open('GET', a, true);
        c.send();
    },
    post: function(a, b, d) {
        var c = new XMLHttpRequest();
        c.onreadystatechange = function() {
            if (c.readyState == 4 && c.status == 200) {
                d(c.responseText);
            }
        };
        c.open('POST', a, true);
        c.setRequestHeader('Content-type',
            'application/x-www-form-urlencoded');
        c.send(b);
    }
};

您可以这样称呼它:AJAX.get('text.txt', function doSomething(what){console.log(what)});