簡體   English   中英

用Javascript返回POST AJAX值

[英]Return POST AJAX value in Javascript

我正在嘗試使一個Javascript函數獲取兩個參數,即URLdata ,將其發布到PHP並返回服務器的response 而無需jQuery或任何庫 (資源)

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;
});
}

但是,這始終返回未定義。 有趣的是,如果我嘗試console.log(response)可以正常工作。

我希望能夠做諸如alert(handle(URL, data));類的事情alert(handle(URL, data));

這不可能嗎? 如果是,我該如何解決?

我最終重新設計了腳本,改用回調。

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)});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM