php读取文件内容传送给js以对象形式取得值

原理:php利用读取文件函数 (马上会补充),将test.txt文件中 格式为json的数据读取出,并使用json编码函数json_encode(),将字符串编码后传递给js。js利用ajax接收数据data,data不加处理时typeof()打印出来的数据类型是string,即字符串。如果我们想要获取到这个字符串特定的值(因为它其实是以json的形式出现),需要将json字符串转换为json对象,这样js就可以获取到特定的值。一开始,我使用js中的eval()和JSON.parse()函数转换时,json字符串打印出来的结果是boolean型(只能输出false,和true),后来发现是php传过来的值不是json形式的,是php的文件读取函数的选择有关,下面将展示。

其中php的文件读取函数:

1,readfile(‘test.txt')会读取文件中的内容和文件中内容的位数!最初使用的是它,结果js正常接收字符串,但是一旦使用JSON.parse(函数,即json字符串转json对象就会报错,后来打印出来才发现,json字符串后面总是跟着一个数字,这个数字就是这个字符串的长度!气死了,怪不得无法转换成json,对象,因为后面跟一个数字就不是json格式了。

2,使用fread()

$handle=fopen('get.txt',"r");
 $a=fread($read,1000);

很遗憾,这种读取文件的方式会返回字符串,但是会将使用转义符将“”’‘转义。

3,使用fgets()循环输出每个字符:

 $handle=fopen('get.txt',"r");
  while(!feof($handle)){
        echo fgets($handle, 1024);
    }
    fclose($handle);
 

这次就非常好,正常输出文件内容,其中的1024是限制读取文件的字符数;

其中的js将string类型的json转换为对象:

就非常简单:

var data=JSON.parse(data);

h.innerHTML=data.mag[0].value;

-------------------------------

下面 是全部的代码:

php中是:

$handle=fopen('get.txt',"r");
  while(!feof($handle)){
        echo fgets($handle, 1024);
    }
    fclose($handle);          //因为这样实际上是将字符一个个发送过去,所以不需要json_encode()转换

js中是:

$(function(){
var  h1=document.getElementById("h1");
$.ajax({
'url':'hi.php',
//'dataType':'json',
'success':function(data){
alert(1); 
console.log(typeof(data));
 var data2=JSON.parse(data);
 console.log(typeof(data2));
 h1.innerHTML=data2.msg[0].value;
}

})
})
 

猜你喜欢

转载自blog.csdn.net/kalinux/article/details/85450966