Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数和jquery之间传递值_Javascript_Jquery_Ajax_Getjson - Fatal编程技术网

Javascript 在函数和jquery之间传递值

Javascript 在函数和jquery之间传递值,javascript,jquery,ajax,getjson,Javascript,Jquery,Ajax,Getjson,我很难在jQuery中处理值,因为大多数jQuery都是在外部脚本中完成的,我不确定何时在函数中,何时不在函数中,因此很难判断何时设置了全局变量,何时未设置 这一点特别让我困惑,我完全被难住了,从逻辑上讲,这应该是可行的,但似乎有什么东西在某种程度上限制了它,忽视了我试图存储的价值观 我已经得出结论,因为我遇到的错误是,在第二个getJSON调用中,我遇到了一个“val”未定义的问题,但是Javascript控制台没有显示任何Javascript错误,只是在我登录控制台并在警报中打印对象时,得到

我很难在jQuery中处理值,因为大多数jQuery都是在外部脚本中完成的,我不确定何时在函数中,何时不在函数中,因此很难判断何时设置了全局变量,何时未设置

这一点特别让我困惑,我完全被难住了,从逻辑上讲,这应该是可行的,但似乎有什么东西在某种程度上限制了它,忽视了我试图存储的价值观

我已经得出结论,因为我遇到的错误是,在第二个getJSON调用中,我遇到了一个“val”未定义的问题,但是Javascript控制台没有显示任何Javascript错误,只是在我登录控制台并在警报中打印对象时,得到了一个未定义的日志

只是需要一双新的眼睛,感觉这可能很简单,但我已经看了这么久的代码,我似乎无法理解它

非常感谢您的帮助

var post_ids = new Array();
var i = 0;
var val;

$.getJSON("/client-ajax/last-ten-posts.php", function(data){
    $.each(data, function(k, val) {
        post_ids.push(val.id);
    });
});

$.getJSON("/client-ajax/last-ten-posts.php?post-id=" + post_ids[0], function(val){
    alert(val.title+"");
    $("#postContainer").empty();
    $("#postContainer").append("<p class='title'>" + val.title + "</p><div class='post-icon'></div><pre>" + val.content + "</pre><p class='footnote'>Posted by " + val.firstname + " " + val.surname + " at <time datetime='2014-06-10'>08:52</time> GMT+00 on the <time>10-06-2014</time></p>");
});

你想做这样的事:

val.content

因此,第二个getJSON调用在第一个getJSON调用完成后发生。

因此我发现了问题,结果是php的PDO中的fetchAll返回一个数组,因此当从数组创建JSON时,需要通过数组的第一个元素访问JSON,如下所示:

而不是:


从逻辑上讲,它不应该工作,因为$.getJSON是异步的。您的最后十篇文章服务应该只返回完整的文章,或者返回您需要显示的内容。打两个电话似乎不必要的昂贵。实际上更便宜,因为我是根据ID返回和收集数据的,而不是在第一次通话中收集大量数据,我只检索所有博客帖子的ID,然后在ID中移动时收集它们。更多的带宽朋友,这是网络开发的关键目标,现在计算机的功能越来越强大,但ISP仍然在拖我们的后腿,特别是在英国。我要补充一点,这是因为在这篇小摘录之后出现了代码,但这与问题更相关,是唯一必要的部分。我知道你只是想帮忙,但我已经想清楚了。你真的在用调试器逐步处理这段代码吗?您是否正在检查以确保/client ajax/last ten posts.php?post id=[id]确实返回了一些内容?val.title来自哪里?它是undefined@charlietfl我想很明显,val.title是data.title的一个输入错误,也出现在OP的问题中。我只是复制了OP的代码,我不确定val.title是什么。。。是不是他实际上指的是data.title?编辑了答案,使用result而不是data,这样就不会混淆第一个数据和第二个dataignore val。现在,代码没有做到这一点,在那之前它失败了,所以我还没有更改它,我只是尝试了不同的var名称。这与$.getJSON无关,它只是接收您的服务返回的内容;你的服务正在返回一个数组。是的,这是因为我将fetchAll与PDO一起使用,而不是单独使用fetchAll,因为fetchAll返回结果数组,如果只有一个结果,它仍然将其放入数组中。
GET http://*****************.com/client-ajax/last-ten-posts.php [HTTP/1.1 200 OK 154ms]
GET http://*****************.com/img/home.jpg [HTTP/1.1 304 Not Modified 152ms]
GET http://*****************.com/img/about.png [HTTP/1.1 304 Not Modified 142ms]
GET http://*****************.com/img/about-repeat.jpg [HTTP/1.1 304 Not Modified 147ms]
GET http://*****************.com/img/blog.jpg [HTTP/1.1 304 Not Modified 146ms]
GET http://*****************.com/img/portfolio.jpg [HTTP/1.1 304 Not Modified 210ms]
GET http://*****************.com/img/contact.jpg [HTTP/1.1 304 Not Modified 209ms]
GET http://*****************.com/client-ajax/last-ten-posts.php [HTTP/1.1 200 OK 207ms]
var post_ids = new Array();
var i = 0;
var val;

$.getJSON("/client-ajax/last-ten-posts.php", function(data){
    $.each(data, function(k, val) {
        post_ids.push(val.id);
    });
    $.getJSON("/client-ajax/last-ten-posts.php?post-id=" + post_ids[0], function(result){
        alert(result.title+"");
        $("#postContainer").empty();
        $("#postContainer").append("<p class='title'>" + result.title + "</p><div class='post-icon'></div><pre>" + result.content + "</pre><p class='footnote'>Posted by " + result.firstname + " " + result.surname + " at <time datetime='2014-06-10'>08:52</time> GMT+00 on the <time>10-06-2014</time></p>");
    });
});
val[0].content
val.content