使用AJAX将变量传递给PHP不起作用

时间:2017-01-28 14:06:22

标签: javascript php ajax

我正在尝试将一个整数传递给php代码,然后将它存储到WAMP sql db中,但是我无法使其工作。

JS函数 - item是我想要存储的整数:

function storeData(item){
    $.ajax({
        url: 'insert.php',
        type: 'POST',
        data: {
            'var1': item
        },
        success: function(results) {
            console.log("success");
        },
        error: function(results){
            console.log("error");
        }
    });
}

PHP文件:

<?php
    $host = "localhost:3306";
    $user = "root";
    $pass = "";
    $databaseName = "items";

    $con = mysqli_connect($host,$user,$pass, $databaseName);
    //$dbs = mysqli_select_db($databaseName, $con);

    $itemNumber = $_POST['var1'];

    echo json_encode($itemNumber);

    $sql = "INSERT INTO item_list (item_number) VALUES ('$itemNumber')";
    mysqli_query($con, $sql) or die(mysqli_error());
?>

我刚收到此错误 - XML解析错误:未找到任何元素 位置:file:/// C:/wamp64/www/bootstrap-3.3.7-dist/insert.php 第8行,第3栏:

3 个答案:

答案 0 :(得分:1)

仅查询数据库是不够的。然后你必须发回一些东西给javascript。在这种情况下,状态消息就足够了

<?php
    $host = "localhost:3306";
    $user = "root";
    $pass = "";
    $databaseName = "items";

    $con = mysqli_connect($host,$user,$pass, $databaseName);
    //$dbs = mysqli_select_db($databaseName, $con);

    $itemNumber = $_POST['var1'];

    echo json_encode($itemNumber);

    $sql = "INSERT INTO item_list (item_number) VALUES ('$itemNumber')";
    $result = mysqli_query($con, $sql) or die(mysqli_error());

    if (!$result) {
        echo json_encode(array('status' => 'FAILED'));
    } else {
        echo json_encode(array('status' => 'OK'));
    }
?>

在你的js代码中

function storeData(item){
    $.ajax({
        url: 'insert.php',
        type: 'POST',
        data: {'var1': item },
        success: function(data) {
            console.log("In success method");
            console.log("status returned " + data.status);
        },
        error: function(data){
            console.log("error");
        }
    });
}

答案 1 :(得分:0)

要使console.log工作,你需要一个成功方法,所以改为:

function storeData(item){
    $.ajax({
      url: 'insert.php',
      type: 'POST',
      data: {
        var1: item
      }
    });}

要:

function storeData(item){
    $.ajax({
      url: 'insert.php',
      type: 'POST',
      data: {
        var1: item
      },
      success: function(results) {
        console.log(results);
      }
    });}

另外为了更好的阅读,我建议你对你的数据进行json_encode编码:

echo json_encode($itemNumber);
exit;

答案 2 :(得分:0)

我弄清楚出了什么问题,显然我需要指定URL的完整路径,不认为它是必需的,因为主文件和php文件都在同一个文件夹中。

function storeData(item){
    $.ajax({
        url: 'http://localhost/bootstrap-3.3.7-dist/main.php',
        type: 'POST',
        data: {
            'var1': item
        },
        success: function(results) {
            console.log("success");
        },
        error: function(results){
            console.log("error");
        }
    });
    return false;
}