使用XHR调用将{JavaScript}值传递给PHP文件

时间:2017-05-08 15:54:14

标签: javascript php jquery ajax

我在服务器上有一个PHP文件,需要从网页上的客户端使用中获取动态值才能查询我的数据库。用户将单击一个链接(以及将用户定向到新选项卡)获取链接所连接的文档位置字符串。我目前正在尝试使用jQuery / AJAX和XHR调用将这些值传递给服务器端代码,但是当我运行它时,似乎PHP无法正常执行。这是JavaScript代码:

// Clicking the link
$('a.docs').on('click', function(){

    // Getting the values needed for the query from existing table
    var theData = subtable.row($(this).parents('tr')).data();

    // The document string
    var thedoc = theData[7];

    // Pass the document value to the PHP file on the server
    $.post('https://example.com/TEST/dashboard/change.php', {
        document: thedoc
    });

    // Make XHR call to execute the PHP file on the server
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "https://example.com/TEST/dashboard/change.php", true);
    xhr.send();
});

如您所见,我尝试在进行thedoc XHR调用之前将GET的值发送到服务器上的文件。以下是服务器上的PHP代码:

<?php
    // The line that grabs the document variable being passed
    $document = $_POST['document'];

    // ... MySQL query stuff using $document as parameter...
?>

当我测试它并单击网页上的链接时,JavaScript正确地抓取文档链接变量,它只是传递没有工作。关于我做错的任何想法?

2 个答案:

答案 0 :(得分:1)

我无法发表评论:(

我同意jorgonor1。

您正在向服务器执行 2个单独的请求。

第一个。您正在使用JQUERY在$ .POST(...)部分中将数据发送到服务器。从示例代码中,忽略结果。

然后,您使用xhr请求执行通用页面的干净请求。

如果您使用$ .POST(),并希望对服务器的结果执行某些操作,请尝试:

    $.post('https://example.com/TEST/dashboard/change.php', {document: thedoc}, function(result){
//do something with the data returned form the server, server response stored in "result" variable
});

请参阅W3Schools

上的示例

答案 1 :(得分:0)

如果你想使用jQuery,试试

let data = form.serialize();
$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

或者如果要使用xhr,则需要将数据作为键/值对字符串发送:

let data = "document=thedoc"