Ajax服务器端呼叫200响应但不发送到$ _POST

时间:2014-02-11 07:05:52

标签: javascript ajax dynamic get server-side

因上下文发生变化而更改问题。

我想将Javascript变量的值发布到服务器中的另一个页面,使用Ajax进行POST和PHP接收。

我在第1.js页上的Javascript代码:

var data = "test data";
var url = "page2.php";
var http = new XMLHttpRequest();
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {
    if(http.readyState == 4 && http.status == 200) {
        console.log(data);//this prints "test data" on my page1.js successfully
    }else{
    console.log(http.readyState); //this always shows different ready states
}
}

这是我在page2.php上的“接收”php代码:

if (isset($_POST)) {
  if (isset($_POST["data"])){
    echo "SUCCESS"; // I am only testing whether "data" was captured in the POST, for now.
  }
}

但它不打印任何东西。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码执行此操作;

$.get("page1.php", function(data) {
  var html = $('<div>',{html:data});
  var my_content = html.find("#div1").text();
  $("#div2").html(my_content);
});

这是一个工作小提琴: http://jsfiddle.net/uKBL3/1/

注意:我使用jsfiddle json service进行ajax模拟。

第二种方式:您可以将page1.php加载到隐藏的div中,并从隐藏的div中读取内容。通过加载到hiddendiv,将触发您的js代码并获取动态内容。之后,您可以阅读您的数据。例如:

$("#hidden_div").load("page2.php", function() {
    var html = $(this);
    var my_content = html.find("#div1").text();
    $("#div2").html(my_content);
})