Php 传递多个json值时不执行jQuery

Php 传递多个json值时不执行jQuery,php,jquery,codeigniter,Php,Jquery,Codeigniter,如何通过json将多个返回的mysql行传递给下面的jquery脚本?根据我目前编写的代码,当我向jquery成功回调函数传递2个或更多时,我无法执行它。我将如何着手实现这一点 jQuery,Js代码: $("#projects").click(function() { jQuery.ajax({ type: "POST", dataType: "JSON", url: "<?=base_url()?>index.php/home/projectsSlider

如何通过json将多个返回的mysql行传递给下面的jquery脚本?根据我目前编写的代码,当我向jquery成功回调函数传递2个或更多时,我无法执行它。我将如何着手实现这一点

jQuery,Js代码:

$("#projects").click(function() {
    jQuery.ajax({ type: "POST", dataType: "JSON",
        url: "<?=base_url()?>index.php/home/projectsSlider",
        json: {returned: true}, success: function(data) {
            if (data.returned === true) {
                $("#content").fadeOut(150, function() {                             
                    $(this).replaceWith(projectsSlider(data.projectId, data.projectName, data.startDate, data.finishedDate, data.projectDesc, data.createdFor, data.contributors, data.screenshotURI, data.websiteURL), function() {
                        $(this).fadeIn(150);
                    });
                });
            }
        }
    });
});

有效的JSON字符串基本上是JS代码块中赋值语句的右侧。您在foreach()循环中生成了多个独立的JSON字符串,并且基本上生成了如下内容

var x = 1; 2; 3; 4; 5; 6;
这是一个明显的语法错误。您正在生成不可解析的json

您的循环应该构建单个单片PHP数据结构,然后在循环完成后对其进行json_编码:

$data = array();
foreach($query1->result() as $row2) {
   $data[] = array($row2->screenshotURI, $row->websiteURL);
}
echo json_encode($data);

有效的JSON字符串基本上是JS代码块中赋值语句的右侧。您在foreach()循环中生成了多个独立的JSON字符串,并且基本上生成了如下内容

var x = 1; 2; 3; 4; 5; 6;
这是一个明显的语法错误。您正在生成不可解析的json

您的循环应该构建单个单片PHP数据结构,然后在循环完成后对其进行json_编码:

$data = array();
foreach($query1->result() as $row2) {
   $data[] = array($row2->screenshotURI, $row->websiteURL);
}
echo json_encode($data);

您正在回显两个不同的JSON字符串。这将不是有效的JSON。因此(尽管我没有测试),ajax调用将失败

我建议您合并这两个JSON,并从“projectsSlider()函数”返回一个有效的JSON。 像这样:

$projectArray = $this->getProjectsRowSet();
$screenshotsArray = $this->getScreenshotsRowSet();
$combinedArray = array_merge(array("Projects" =>$projectArray),array("Screenshots" =>$screenshotsArray));
echo json_encode($combinedArray);
然后使用“data.Projects”和“data.Screenshots”从ajax回调方法中访问每个行集。 像这样:

$projectArray = $this->getProjectsRowSet();
$screenshotsArray = $this->getScreenshotsRowSet();
$combinedArray = array_merge(array("Projects" =>$projectArray),array("Screenshots" =>$screenshotsArray));
echo json_encode($combinedArray);

您正在回显两个不同的JSON字符串。这将不是有效的JSON。因此(尽管我没有测试),ajax调用将失败

我建议您合并这两个JSON,并从“projectsSlider()函数”返回一个有效的JSON。 像这样:

$projectArray = $this->getProjectsRowSet();
$screenshotsArray = $this->getScreenshotsRowSet();
$combinedArray = array_merge(array("Projects" =>$projectArray),array("Screenshots" =>$screenshotsArray));
echo json_encode($combinedArray);
然后使用“data.Projects”和“data.Screenshots”从ajax回调方法中访问每个行集。 像这样:

$projectArray = $this->getProjectsRowSet();
$screenshotsArray = $this->getScreenshotsRowSet();
$combinedArray = array_merge(array("Projects" =>$projectArray),array("Screenshots" =>$screenshotsArray));
echo json_encode($combinedArray);


请重新格式化您的代码。。。所有的凹痕都消失了:-(@Benjamin Cox:本来可能没有凹痕;-)没有,我做了凹痕,但看起来很可怕。@zerkms LOL,我甚至没想到;-)@迈克尔·格里斯比:怎么可能看起来比现在更可怕呢?;-)请重新格式化您的代码。。。所有的凹痕都消失了:-(@Benjamin Cox:本来可能没有凹痕;-)没有,我做了凹痕,但看起来很可怕。@zerkms LOL,我甚至没想到;-)@迈克尔·格里斯比:怎么可能看起来比现在更可怕呢?;-)好的,记住我有两个单独的foreach语句。我需要组合它们还是只在每个循环中包含新的数组代码?不管有多少个循环。最后,您只能从一个json_encode()调用中输出一个json字符串?我只是尝试一种不同的方法,还是您向我展示的代码可以解决这个问题?我不知道您的客户端需求是什么,但在PHP中构建复杂的嵌套结构,然后将该结构转换为json非常简单。当然,你必须修改你的客户端代码来处理新的结构。你知道有任何教程可以解释这一点吗?好的,记住我有两个单独的foreach语句。我需要组合它们还是只在每个循环中包含新的数组代码?不管有多少个循环。最后,您只能从一个json_encode()调用中输出一个json字符串?我只是尝试一种不同的方法,还是您向我展示的代码可以解决这个问题?我不知道您的客户端需求是什么,但在PHP中构建复杂的嵌套结构,然后将该结构转换为json非常简单。当然,您必须修改客户端代码来处理新的结构。您知道有任何教程可以解释这一点吗?-正如你所知道的,我只收到了一行回复。这是我当前的PHP:-我运行的循环是错误的还是其他什么,或者我仅限于通过json发送一行?您迭代查询结果的foreach循环是错误的。在foreach循环处理$rows之前,需要创建一个数组。i、 e.“$projectsArray=array()”然后需要为每行创建新数组,如“$projectArray=array();”并将其添加到$projectsArray中,如“$projectsArray[]=$projectArray;”。我已经为你的pastebin链接添加了一个修改。我只对项目做了修改,你也需要对截图做同样的修改。好的,谢谢。您是否有指向新pastebin代码的链接?让我问你一件事。。。你是如何在网络开发方面变得如此聪明的?你做这件事多久了?啊,你真幸运,哈哈。真希望我能做那么久。我想,在我考虑找一份网络开发人员的工作之前,我还需要学习。那真的很好。无论如何,我仍然没有得到所有返回的行,你可以从下面的图片中看出:。以下是已编辑的PHP:。此外,我还计划阅读jQueryAjax语句是如何完全工作的,因为我不完全确定。但同时,我如何编写成功声明。这是我目前的代码:。非常感谢。看来你所学的都是对的。祝你好运有些大括号放错了位置,有些变量名混淆了。我强烈建议您首先仔细查看代码,查找这些类型的愚蠢错误。这是pastebin链接。我没有测试固定的代码,只是用眼睛来固定。-正如你所知道的,我只收到了一行回复。这是我当前的PHP:-我运行的循环是错误的还是其他什么,或者我仅限于通过json发送一行?您迭代查询结果的foreach循环是错误的。在foreach循环处理$rows之前,需要