下载过里的文件Jsonp那个不能用,一直跳发生错误:200,弹框
下载过里的文件Jsonp那个不能用,一直跳发生错误:200,弹框
下载过里的文件Jsonp那个不能用,一直跳发生错误:200,弹框
2016-04-14
已经找出错误,并修正。
看看是否是下面2个问题:
1.URL地址错误:
url: "http://127.0.0.1:8080/ajaxdemo/serverjsonp.php?
jqueryjsonp.html文件中,ajax文件中的URL地址是否对应,如果不对应,会出现错误:
//调试面板console错误信息: Failed to load resource: net::ERR_CONNECTION_REFUSED //调试面板Network里具体页面的header信息--request header里显示错误: Provisional headers are shown
这种情况,是url地址错误导致。
解决方法:
查看url地址是否正确。
上面的url端口号为8000,我本地的端口号是80,因此需要改端口号为本地的端口号。(视频中使用软件做服务器时因为端口冲突,改过端口后,因此本地测试时需要进行调整。)
路径是否正确。根目录下的ajaxdemo文件夹下,这里我的本地目录是在ajax文件夹下,因此也需要进行相应修改。
修改过后的正确的url地址为:
url: "http://127.0.0.1:80/ajax/serverjsonp.php?
2. 服务器文件serverjsonp文件错误。
将文件里修改过的jsonp内容还原为json内容时,改动错误,会导致alert错误(提示“发生错误:200”)。
这时,调试面板Network里具体页面的header选项卡页面里,明明显示status为200,应该已经成功了,为啥还会弹出200错误呢?而且Response选项卡页面里,也是有成功信息的,为啥还会错误呢?
原因:serverjsonp文件错误
解决方法:
修改serverjsonp文件:
//通过员工编号搜索员工 function search(){ $jsonp = $_GET["callback"]; //检查是否有员工编号的参数 //isset检测变量是否设置;empty判断值为否为空 //超全局变量 $_GET 和 $_POST 用于收集表单数据 if (!isset($_GET["number"]) || empty($_GET["number"])) { echo $jsonp . '({"success":false,"msg":"参数错误"})'; return; } //函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。 //global 关键词用于访问函数内的全局变量 global $staff; //获取number参数 $number = $_GET["number"]; $result = $jsonp . '({"success":false,"msg":"没有找到员工。"})'; //遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果 foreach ($staff as $value) { if ($value["number"] == $number) { $result = $jsonp . '({"success":true,"msg":"找到员工:员工编号:' . $value["number"] . ',员工姓名:' . $value["name"] . ',员工性别:' . $value["sex"] . ',员工职位:' . $value["job"] . '"})'; break; } } echo $result; }
将上述代码改为:
//通过员工编号搜索员工 function search(){ //检查是否有员工编号的参数 //isset检测变量是否设置;empty判断值为否为空 //超全局变量 $_GET 和 $_POST 用于收集表单数据 if (!isset($_GET["number"]) || empty($_GET["number"])) { echo '{"success":false,"msg":"参数错误"}'; return; } //函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。 //global 关键词用于访问函数内的全局变量 global $staff; //获取number参数 $number = $_GET["number"]; $result = '{"success":false,"msg":"没有找到员工。"}'; //遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果 foreach ($staff as $value) { if ($value["number"] == $number) { $result = '{"success":true,"msg":"找到员工:员工编号:' . $value["number"] . ',员工姓名:' . $value["name"] . ',员工性别:' . $value["sex"] . ',员工职位:' . $value["job"] . '"}'; break; } } echo $result; }
注意改动位置:
//删除: $jsonp = $_GET["callback"]; $result = $jsonp . '({"success":false,"msg":"没有找到员工。"})'; //改为: $result = '{"success":false,"msg":"没有找到员工。"}'; //这里删除$jsonp.,同事也要删除''中的()号。
吧主的问题就是这个()号引起的,将其删除,应该就可以正常运行了。
举报