提取api不发送POST数据

问题描述:

我第一次尝试提取API,我试图将变量发布到PHP脚本。我做了这个与jQuery.ajax()相同的工作。提取api不发送POST数据

var myRequest = new Request('invoeren.php', {method: 'POST', body: JSON.stringify({name: name})}); 

fetch(myRequest).then(function(response) { 
    console.log(response); 
}); 

这会返回给我Undefined index 'name'

我在做什么错?

工作jQuery代码:

$.ajax({ 
    url: "invoeren.php", 
    method: "POST", 
    data: { name : name} 
}).done(function(msg) { 
    console.log(msg); 
}).fail(function(jqXHR, textStatus) { 
    alert("Naam is niet ingevoerd door een probleem: " + jqXHR); 
}); 

PHP脚本:

try { 
    $dbh = new PDO('mysql:host=localhost;dbname=ajaxoef', $user, $pass); 
    $stmt = $dbh->prepare('INSERT INTO names(name) VALUES (:name)'); 
    $stmt->bindParam(':name', $name); 

    $name = json_decode($_POST['name']); 
    $stmt->execute(); 

    echo "Naam is ingevoerd."; 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 
+0

如何定义正在使用的'name'的值 –

+0

“这返回给我未定义的索引'name'。” - 哪里?是PHP响应(使这[重复])(https://*.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef))?这是一个JavaScript错误? – Quentin

+0

“我做了与jQuery.ajax()相同的工作” - 工作代码是什么样的?如果我们看不到它,很难说你改变了什么。 – Quentin

工作jQuery代码

数据:{名:名}

...所以当你使用jQuery时,你发送WWW URL Form Encoded data(默认的jQuery编码)。

body: JSON.stringify({name: name}) 

...但是当你切换到回来,你也该对象转换为JSON。

JSON不是WWW URL表单编码!

大概你没有重写PHP期望的JSON,并且可能试图从$_POST(这是空的,因为PHP默认不支持JSON编码请求)读取。

您可以构造一个FormData对象,该对象将以PHP默认解析的方式进行编码。

var body = new FormData; 
body.append("name", name); 
//... 
body: body 
+0

你说得对,这是FormData问题!谢谢 –