为什么我的PHP没有看到javascript post-request?

时间:2017-03-30 13:10:41

标签: javascript php json ajax google-chrome

我是Javascript,PHP和AJAX的新手。我搜索了很长时间才得到这个问题的答案,但却找不到答案。首先,这是我的代码:

我的index.html文件:

<input type="text" id="value" onkeyup="loadDoc(this.value)">
        <p id="demo"></p>
        <p id="demo2"></p>

我的test.js文件:

function loadDoc(kruispunt) {
  var xhttp;
  xhttp=new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        document.getElementById("demo").innerHTML = kruispunt;
    }
  };
  xhttp.open("POST","link.php?q=" + kruispunt, true);
  xhttp.send("kruispunt");
}
function myFunction(){
var xhttp;
  xhttp=new XMLHttpRequest();
  xhttp.onload = function() {
    if (this.readyState == 4 && this.status == 200) {
         document.getElementById("demo2").innerHTML = this.responseText;
  xhttp.open("GET","link.php", true);
  xhttp.send();
  }
   }
  }

我的link.php文件:

<?php

 $kruispunt5= file_get_contents('http://fiwarelab.ckan.nl/api/action/datastore_search?   resource_id=0077d99e-127c-4c28-acde-c0f337e13065');
 $kruispunt5 = json_decode($kruispunt5, true);
 $lat5 = json_encode($kruispunt5['result']['records'][4]['latitude']);
 $long5 = json_encode($kruispunt5['result']['records'][4]['longitude']);



 $kruispunt11 = file_get_contents('http://fiwarelab.ckan.nl/api/action/datastore_search?  resource_id=6b39a68b-54d1-4254-a2ce-af59a8856f3f');
 $kruispunt11 = json_decode($kruispunt11, true);
 $lat11 = json_encode($kruispunt11['result']['records'][4]['latitude']);
 $long11 = json_encode($kruispunt11['result']['records'][4]['longitude']);

 $q = $_REQUEST['kruispunt'];
 $x = 0;
 $y = 0;
 if ($q !== "") {
   if ($q === "5"){
      $x = $lat5;
      $y = $long5;
    } else if ($q === "11"){
        $x = $lat11;
        $y = $long11;
   }
 }
  echo json_encode($x);
  echo json_encode ($y);
   ?>

我想要实现的是我的inputvalue存储在“demo”中,同时将该参数(kruispunt)提供给我的.php文件。然后我希望我的.php文件弄清楚$ x和$ y是什么,并将其发送回myFunction()并将php文件中的$ x和$ y变量放入我的“demo2”。

如果我把5作为我的输入值,例如,“demo”确实返回5但是之后没有显示在“demo2”中,所以我认为我的POST或我的.php文件有问题。我以某种方式在我的浏览器中没有出现错误,但也没有显示任何错误。

我真的希望我明确表达了我想要达到的目标,并提前感谢您解决或帮助解决我的问题!

1 个答案:

答案 0 :(得分:0)

你说q=" + kruispunt。那么你的查询字符串(如果你要在查询字符串中发送数据,你为什么要发出POST请求?)有一个键q

然后你说$q = $_REQUEST['kruispunt'];

密钥kruispunt不是q

同时,您在POST请求中发送的数据 - xhttp.send("kruispunt"); ...是纯文本字符串,而不是URL编码的表单数据。