2010-10-26 80 views
0

我想从服务器使用jQuery $.getJSON得到一些数据,并且代码似乎工作正常,直到它到达$.getJSON,它似乎并没有触发,根本没有,没有控制台日志,当我按下按钮,这里是下面的代码,jQuery的getJSON不工作

$(document).ready(function(){ 
var funk; 
    $('#button').live('click', function(){ 
     var funk = ""; 
     var query = ""; 
     $('#wrapper > [data-custom="field"]').each(function(i, data){ 

      if(i == 0){ 
       funk = query + $(this).attr('id')+" = '"+$(this).val()+"'"; 
      }else{ 
       funk = funk + " AND " + $(this).attr('id')+" = '"+$(this).val()+"'"; 
      }; 

     }); 

     $.getJSON('test.php', {query: funk}, function(json){ 
      console.log(json) 
     }); 

    }); 
}); 

在同一个文件夹中的PHP文件test.php的,

$weo = $_GET['query']; 

echo $weo; 

上这可能是导致该问题的任何想法?

Thanx提前!

+0

你确定呼叫正在到达服务器吗?我会先剥离代码并传递一个硬编码的“funk”值来追踪问题。此外,如果服务器抛出一个错误(例如HTTP状态400),那么成功函数将不会被调用,并且您不会在控制台上看到您的日志(尽管您可能会看到一个错误被记录?) – 2010-10-26 13:45:38

回答

0

如果您使用的调试:

- >火狐浏览器:打开Firebug,并期待在Net标签,使确定请求正在触发,并查看来自服务器的响应是什么。

- > IE:启动Fiddler2查看请求/响应。

- > Chrome:使用资源选项卡。

一旦你看到服务器返回什么(如果有的话),你可以找出如何继续。

+0

我正在使用萤火虫,没有什么是射击,重新启动后它刚刚工作,再次Windows失败,但thanx的所有帮助!欣赏它! – Odyss3us 2010-10-27 07:34:01

1

我认为getJSON正在崩溃,因为服务器没有返回好的JSON语法。

尝试在你的PHP文件做

echo json_encode($weo); 

。如果不最终希望使用JSON,但纯文本,而应使用$.get

$.get('test.php', {query: funk}, function(data){ 
    console.log(data) 
}); 
+0

还是什么都没有,我也没有收到任何错误信息,这真是奇怪! – Odyss3us 2010-10-26 13:38:41

+0

做什么Soslo说;-) – lonesomeday 2010-10-26 13:45:39

0

肯定你的Test.php没有按预期工作。要调试正在返回什么从服务器返回试试这个代码

function AjaxDebug() { 
$.ajax({ 
    type: "GET", 
    url: "test.php", 
    dataType: "jsonp", 
    data: ({query: funk}), 
    success: function(results) { 
     alert("Success!"); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
    alert(errorThrown); 
    } 
}); } 

然后尝试有出错的破发点,并检查XMLHttpRequest.getresponseText,getresponseXML等有更深入的了解的问题是什么。

0

我有同样的问题getJSON不起作用。我注意到数据被加载,但无法使用。

解决方法是使用JSONP并在url querystring中添加一个回调函数变量。

$.getJSON("http://www.example.com/test.php?callback=?",function(json){ 
     console.log(json); 
    }); 

请注意,我们把一个?作为回调函数名称而不是真实的函数名称。这是因为jQuery替换了?与生成的函数名称(如jsonp1232617941775)调用内联函数。

在你的PHP,你需要在回调函数输出。

echo $_GET['callback'] . '(' . $jsonData . ');'; 
// prints: jsonp1232617941775({"name" : "Gaurav", "age" : "91"}); 

这将输出有效JSONP对象,你就可以加载并在您的jQuery代码中使用。