未捕获(在promise中)SyntaxError:意外的输入结束

时间:2017-09-11 09:51:22

标签: javascript cors fetch-api

我似乎没有找到任何错过的结束输入。这是我收到的错误:

  

Uncaught(在promise中)SyntaxError:意外的输入结束       at fetch.then.response(InventoryOnHand.js:33)

下面是我的代码:我有一个url的值。

 fetch(url + "GetItemMasterList", { 'mode': 'no-cors' })
   .then(response => response.json())
   .then(function (data) {
     console.log(data)
 });

1 个答案:

答案 0 :(得分:1)

这是CORS政策的一个众所周知的问题。要解决此问题,您需要访问服务器端API。特别是,您必须在php或其他服务器端点的标题中添加一行:

<?php
header('Access-Control-Allow-Origin: *');
//or
header('Access-Control-Allow-Origin: http://example.com');

// Reading JSON POST using PHP
$json = file_get_contents('php://input');
$jsonObj = json_decode($json);

// Use $jsonObj
print_r($jsonObj->message);

...
// End php
?>

另外,请确保不要在服务器端点的标题中:

header("Access-Control-Allow-Credentials" : true);

使用POST请求的工作获取代码模型是:

const data = {
        optPost: 'myAPI',
        message: 'We make a research of fetch'
    };
const endpoint = 'http://example.com/php/phpGetPost.php';

fetch(endpoint, {
    method: 'POST',
    body: JSON.stringify(data)
})
.then((resp) => resp.json())
.then(function(response) {
    console.info('fetch()', response);
    return response;
});