数组的Javascript作用域,并将js数组转换为php数组
Javascript scope of array and converting js array to a php array
编辑/澄清:我有一个php页面,叫它displayPhotos.php,在其中我设置了一个Ajax调用到不同的php页面,叫它getPhotos.php,查询数据库并返回照片信息(标题,文件名等)到displayPhotos.php在那里它们被显示。我在displayPhotos中使用php来操作getPhotos返回的数据。Ajax调用返回的数据是一个javascript二维数组。我需要将javascript数组转换为php数组,这样我就可以进行显示和其他操作。我怎么做呢?希望对你有帮助。
我的眼睛因为看了所有的文件而疼痛。
我想使用ajax来查询数据库,返回数据,然后使用php继续与网页。
我看过的所有例子都是从在php中创建json开始的。我需要从javascript中的json对象开始。
<script>
var photoarray = [];
var ajaxRequest = $.ajax
({
url : "fhs_get_photos.php",
type: "POST",
dataType: "json",
success: function(photo_array)
{
photoarray = photo_array;
//line below works. the file name is correct but disappears
//outside of this function
console.log("photoarray[0][file_name] is: " + photoarray[0]['file_name']);
},
error: function(request, status, error)
{
alert('An error occurred: ' );
}
});
在这个例子中,我没有传递任何东西到php文件,查询的数据库。控制台日志显示photoarray中的文件名是正确的,但是一旦在这个函数之外,它就消失了,即使它被声明为全局的,我认为它是。为什么,我需要做什么来解决这个问题。
php文件只是做一个SELECT * FROM.....并返回所有内容
// in fhs_get_photos.php
// SELECT * FROM table......
echo $json = json_encode($result);
return $json;
现在数组又回来了,不过是在javascript中。一旦我弄清楚作用域问题,我如何将这个javascript数组转换为php数组?
<h3>Welcome to the Historical Society's historical photo archive
</h3>
</header>
<figure id="photo_figure">
<script>
//line below gets me: SCRIPT5007: Unable to get property 'thumb' of
//undefined or null reference
console.log("photoarray thumb: ") + photoarray[0]['thumb'];
</script>
我解释得对吗?
首先AJAX是异步的。这意味着它在您请求时发送请求,但在将来某个时候接收响应。它在php渲染和发送页面后工作。所以。当您通过AJAX获得更新时,您必须使用javascript来使该更新生效。最简单的解决方案是在成功回调中处理响应。这样你就不需要搅乱全局作用域(这是一个不好的做法)。
你的HTML应该是这样的:
<header>
<h3>Welcome to the Historical Society's historical photo archive
</h3>
</header>
<div id="figures"></div>
你可以通过声明一个函数来处理这个过程:
function updateDom(photoArr) {
var $figures = $('#figures');
$.each(photoArr, function() {
console.log(this);
$figures.append('<img src="' + this.thumb +'">');
});
}
下面的代码放在成功回调
并在成功回调中执行该函数,并将json中的数组传递给它,该数组已被解析并成为有效的js对象。
var photoArray = JSON.parse(photo_array);
updateDom(photoArray);
这里是小提琴,但它只用于DOM部分
- 使用JS将数组转换为json对象
- 本地存储中的字符串到字节数组转换
- Javascript函数,用于将数组转换为“;2-元组”;
- php数组转换为javascript
- 在Javascript中将一个值和字符串数组转换为if语句
- 将数组转换为javascript格式的字符串
- 如何将数组转换为有效的json
- JSON数组转换为JS对象数组
- 如何将数组转换为映射
- JavaScript:将字符串数组转换为文本区域
- javascript |数组转换
- 数组转换为多个字符串
- Javascript将数组转换为字符串并使其反向输出
- 将Byte数组转换为Angularjs中的Base64字符串
- 将对象数组转换为与nodejs/pg/unnest兼容的数组
- 将Javascript数组转换为PHP数组
- 将数组转换为键值对
- 使用Ramda将对象数组转换为普通对象
- javascript将对象数组转换为字符串以存储在s3中
- 使用.join方法将数组转换为不带逗号的字符串