PHP没有使用fetch正确接收$ _POST变量

时间:2017-08-05 18:22:45

标签: javascript php post react-native fetch

使用React-Native和fetch(),我想使用PHP脚本创建一个新的数据库条目。 PHP脚本本身正在运行,使用html页面成功测试了它。 但我无法让我的Javascript fetch()版本正常工作。

// App.js    

    const dbData = new FormData();
    dbData.append(
      'fileName', 'fileNameTest',
    );

    fetch('http://myurl.com/createDatabaseEntry.php', {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
      method: 'POST',
      body: dbData,
    }).then((res) => {
      console.log('Database response: ', res);
    })
    .catch((error) => {
      console.log('DB error: ', error);
    });

BTW:日志中的网络状态始终为200。

PHP方面:

// createDatabaseEntry.php

$fileName = $_POST['fileName'];
$link = mysqli_connect('localhost', 'login', 'password', 
'myDatabase');
$sql = "INSERT INTO files (fileName) VALUES ('$fileName')";

可能是用fetch或dbData.append()传递变量?

2 个答案:

答案 0 :(得分:0)

如我所见,您已连接到数据库但未执行INSERT语句。 请不要忘记 1)参数逃逸 2)错误处理

$filename = mysqli_real_escape_string($link, $fileName);
$sql = "INSERT INTO files (fileName) VALUES ('$filename')";
if (true === mysqli_query($link, $sql)) {
    echo 'Insert done';
} else {
    echo 'Error: ' . mysqli_error($link);
}

答案 1 :(得分:0)

代码

至少有两个问题
  1. echo

  2. 没有回复php
  3. 您只需记录Response对象,您可能希望使用Response.json()Response.text()Response.arrayBuffer()Response.blob()来阅读phpJSON,纯文字,ArrayBufferBlob

  4. fetch('http://myurl.com/createDatabaseEntry.php', {
      method: 'POST',
      body: dbData,
    })
    .then(res => res.text()).then(text => console.log(text))
    .catch(error => console.error('DB error: ', error));