使用jquery ajax从php获取JSON值

Getting JSON value from php using jquery ajax

嗨朋友可以任何人我这个PLZ。 我刚开始这一章..我正在尝试从PHP获取JSON格式值但是在运行时我得到了这个输出"SyntaxError:JSON.parse:unexpected characte"..我想我在php转换中做错了... plz 帮帮我的朋友

我的.html文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html>
<head>
    <script src="http://code.jquery.com/jquery-1.8.3.min.js">
    Display Page
</head>
<body>
    <button type='button' id='getdata'>GetData.</button>
    <button type='button' id='get'>sample</button>
    <script type='text/javascript'>
    $('#get').click(function() {
        alert("laksjdflk");
    });
    $(document).ready(function() {
        $('#getdata').click(function() {
            $.ajax({
                url:'neww.php' ,
                dataType:'json' ,
                success:function(output_string) {
                    alert(output_string);
                },
                error:function(xhr,ajaxOptions,thrownError){
                    alert(xhr.statusText);
                    alert(thrownError);
                }
            });
        });
    });
   
</body>
</html>

generatephp.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    mysql_connect("localhost","root","");
    mysql_select_db("androidlogin");

    $sql=mysql_query("SELECT* FROM trysave");

    $temp="";
    $i=0;
    while($row=mysql_fetch_assoc($sql)){
        $temp=$row['stringss'];
        $temp.=$row['integerr'];
        $array[i]=$temp;
        i++;
    }
    echo json_encode($array);// this will print the output in json
?>


这可能是因为Undefined array variable notice,如果没有records found,则必须define array

你错过了$之前的$,它给出了错误(被视为CONSTANT,并且在你的代码中未定义),i应该是$i之类的,

1
2
3
4
5
6
7
8
9
$array=array();// define here to prevent from"Notice"
while($row=mysql_fetch_assoc($sql))
{
    $temp=$row['stringss'];
    $temp.=$row['integerr'];
    $array[$i]=$temp;// use $ before i
    $i++;// use $ before i
}
echo json_encode($array);// this will print the output in json

还有一件事你提到PHP文件名是generatephp.php而你在$.ajax()中使用url:'neww.php' ,,你必须检查你的代码一次。


我会用不同的东西......

PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    mysql_connect("localhost","root","");


    $sql=mysql_query("SELECT stringss, integerr FROM androidlogin.trysave");

    $temp=array();
    $i=0;
    while($row=mysql_fetch_assoc($sql)){
        $temp[] = $row;
           }
    echo json_encode($temp);// this will print the output in json
?>

//你不需要$ i变量,因为你将获得java str.length = that $ i

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 <script type='text/javascript'>
    $('#get').click(function() {
        alert("laksjdflk");
    });

    $(document).ready(function() {
        $('#getdata').click(
        function() {
jQuery.getJSON("neww.php") //no get vars

.done(function(a) {
//console.clear();
console.log(a);
show_data(a);
})

.fail(function(a) {
console.log("error" );
});

});
});


function show_data(a){

for(var i=0; i<a.length; i++)
var stringss = a[i].stringss;
var integerr = a[i].integerr;
var nuber_temp = i;
//do stuff with them ...

}

如果问题仍然存在...请尝试http://php.net/manual/ro/function.urlencode.php


除了明显的问题(咳嗽MySQL_ *)之外,您的PHP文件应该在响应头中指定输出将是JSON类型。 输出默认为text/html,Javascript无法将其解析为有效的JSON对象。

你可以这样做

1
2
3
<?php
header('Content-type: application/json');
// Rest of the code remains intact