2017-06-14 102 views
0

我在AJAX和PHP之间的通信存在问题。我已经从相关的问题和答案中尝试了所有这些代码,但是没有任何工作。此代码应该从同一台服务器上的PHP文件接收JSON字符串,并在HTML区域中显示值。无法将值从PHP传递到AJAX

$(document).ready(function(){ 
    setInterval(ajaxcall, 1000); 
}); 

function ajaxcall(){ 
var data = $('#signup_form').serialize(); 

    $.ajax({ 
     type: "GET", 
     url: "test.php", 
     data: data, 
     dataType: 'json', 
     success: function (data) { 
      window.console.log("Success"); 
      document.getElementById("count").innerHTML = $('#time').html(data.time); 
    },error: function alert(){"error";} 
});} 

当我在浏览器中执行脚本(使用调试模式)时,没有任何反应。我认为这意味着'成功'方法存在问题。

这里是我的PHP代码(用于测试)的一部分:

for($i = 0; $i < 50; $i++){ 
    sleep(1); 
    return_json($argv[1]); 
} 

//return all values for html/javascript 
function return_json($a){ 
    $json = array('time' => $a); 
    echo json_encode($json); 
} 

我希望你们中的一些可以帮助我:)

+1

是否Ajax调用ctually返回的东西?使用萤火虫或类似的东西来检查hwat你的ajax调用返回 – Naruto

+0

'window.console'方法我应该能够看到每秒,但没有任何东西写在控制台。 – Slice18

+1

你从$ _GET设置变量? $ argv用于cli我认为...对于ajax使用超全局$ _GET –

回答

0

您应该将内容类型添加到您的响应头:

//this line 
header('Content-type: application/json'); 

for($i = 0; $i < 50; $i++){ 
    sleep(1); 
    return_json($argv[1]); 
} 

//return all values for html/javascript 
function return_json($a){ 
    $json = array('time' => $a); 
    echo json_encode($json); 
} 

延伸阅读这里更详细的解释:J- Query $.ajax request of dataType json will not retrieve data from PHP script

0

函数ajaxcall()是否真的被调用?尝试在其begining添加console.log电话,如

function ajaxcall(){ 
    var data = $('#signup_form').serialize(); 
    console.log(' form data = %o', data) 

    //... 

还有另外一个可能的问题的功能error: function alert(){"error";}什么都不可见。如果你的服务器脚本返回一个错误,你将在这种情况下看不到任何东西。

它更改为类似

error: function(){ alert("error"); }