javascript - 已编辑 可以查看 JSON 响应 200 OK 但返回 parsererror

标签 javascript ajax json cordova getjson

我可以得到以下字符串

([{"data":{"Rate":"","RoleA":"Student","NameA":"student","RoleB":"Tutor","NameB":"tutorB","Give":"0","Get":"1","Accept":"0"}}]);

我已阅读 http://api.jquery.com/jQuery.ajax/但仍然不确定我哪里做错了。

这是我的代码

            $.ajax({
                        type:           'GET',
                        dataType:       'jsonp',
                        jsonpCallback:  'jsoncallback',
                        data: 
                        {

                                nameB:  nameB,
                                roleB:  roleB,
                                get123: get123,
                                accept: accept
                        },
                        url: 'http://mydomain.com/check.php?callback=?',
                        success: function(data){
                            alert(data[0].data.RoleA);
                            //alert("ABC");
                            //if ( $("#role").text() == "Tutor" )
                            //{
                            //  window.location.href='tutor_home.html';
                            //}
                            //else
                            //{
                            //  window.location.href='student_home.html';
                            //}         
                        },
                        error: function(jqXHR, textStatus){
                            alert("Request failed: " + textStatus);
                        }
            });

从chrome中,我可以找到json字符串,它看起来很正常。但是,它不会提醒成功消息,而是提醒 parsererror 错误..我应该在哪里更改?谢谢

我的PHP

<?php 

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Content-type: application/json");

include('mysqlConfig.php');


$nameB = $_GET["nameB"];
$roleB = $_GET["roleB"];
$get = $_GET["get123"];
$accept = $_GET["accept"];

$sql="SELECT * FROM tbl_rating WHERE NameB='$nameB' and RoleB='$roleB' and Get='$get' and Accept='$accept'";
$result=mysql_query($sql);


$rows = array();

//retrieve and print every record
while($r = mysql_fetch_assoc($result)){
    // $rows[] = $r; has the same effect, without the superfluous data attribute
    $rows[] = array('data' => $r);
}

// now all the rows have been fetched, it can be encoded
//echo json_encode($rows);

$data = json_encode($rows);
echo $_GET['jsoncallback'] . '(' . $data . ');';
?>

我不知道为什么 URL 如下 请求网址: http://mydomain.com/check.php?callback=jsoncallback&nameB=tutorB&roleB=Tutor&get123=1&accept=0&_=1363710513593

最后一个参数&_=1363710513593我不确定它是什么?

但是可以返回上面的字符串

与jquery版本有关吗?我使用了jquery-1.9.1.min.js

最佳答案

您需要在ajax设置对象中指定一个回调名称(现在称为“?”)。详细了解其工作原理 http://api.jquery.com/jQuery.ajax/ 。在设置对象中查找“jsonp”。您还需要在 PHP 代码中获取该回调名称,并在响应中返回它,以便该函数在客户端收到该函数时执行。 示例:jsoncallback(YOURJSONDATA)。

粘贴自 http://api.jquery.com/jQuery.ajax/

jsonp 类型:字符串 覆盖 jsonp 请求中的回调函数名称。该值将用于代替“callback=?”中的“callback” url 中查询字符串的一部分。因此 {jsonp:'onJSONPLoad'} 将导致 'onJSONPLoad=?'传递到服务器。从 jQuery 1.5 开始,将 jsonp 选项设置为 false 可防止 jQuery 将“?callback”字符串添加到 URL 或尝试使用“=?”进行转型。在这种情况下,您还应该显式设置 jsonpCallback 设置。例如,{ jsonp: false, jsonpCallback: "callbackName"}

关于javascript - 已编辑 可以查看 JSON 响应 200 OK 但返回 parsererror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15503281/

相关文章:

javascript - Ember JS : observed properties on destroyed objects

php - 存储在 Mysql BLOB 中的图像,尝试显示时出错

php - 使用 AJAX/jQuery 设置 $_SESSION | PHP session 不工作?

javascript - 在React的onClick事件中重置输入值

javascript - @Get ('*' ) 不匹配空 (NestJS)

javascript - 删除禁用不起作用

javascript - Prop 未动态更新

asp.net - Chrome 的高级 REST 客户端不介意 CORS 限制,怎么样?

java - 使用 GSON 将 java.io.File 解析为 JSON

mysql - 如果存在特定 id,则将 json 值提取到列中