为了账号安全,请及时绑定邮箱和手机立即绑定

下载过里的文件Jsonp那个不能用,一直跳发生错误:200,弹框

下载过里的文件Jsonp那个不能用,一直跳发生错误:200,弹框

正在回答

6 回答

删除上面的,就不能跨域了

0 回复 有任何疑惑可以回复我~

mdzz。。试了好久。。原来我配置的环境中连8080端口都没有开,服务器怎么访问你呢?

这个跨域的例子需要在一台电脑上一个服务器开2个端口,当然指的是后台用php的,,,之前我用nodejs开的不行的。。

就这个例子而言,我使用的是wamp开2个端口,然后使用jsonp技术跨域访问,老师使用的方法没有问题,只是路径要改一下,改成本机的对应的路径就OK了。当然你如果不跨域访问,也可以像楼上一样更改

0 回复 有任何疑惑可以回复我~

已经找出错误,并修正。

看看是否是下面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地址是否正确。

  1. 上面的url端口号为8000,我本地的端口号是80,因此需要改端口号为本地的端口号。(视频中使用软件做服务器时因为端口冲突,改过端口后,因此本地测试时需要进行调整。)

  2. 路径是否正确。根目录下的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.,同事也要删除''中的()号。

吧主的问题就是这个()号引起的,将其删除,应该就可以正常运行了。

3 回复 有任何疑惑可以回复我~
#1

qq_乔小玛_0

//删除: $jsonp = $_GET["callback"]; $result = $jsonp . '({"success":false,"msg":"没有找到员工。"})'; //改为: $result = '{"success":false,"msg":"没有找到员工。"}'; //这里删除$jsonp.,同事也要删除''中的()号。 这样了还是跨域吗
2017-03-14 回复 有任何疑惑可以回复我~

我的也是错误,错误提示:

Request Header下提示:

Provisional headers are shown。

将其改动成XHR2,还是会出现这个错误。


0 回复 有任何疑惑可以回复我~

type为get时候  dateType为"jsonp"

0 回复 有任何疑惑可以回复我~

我就改了里面的PHP链接地址

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Ajax全接触
  • 参与学习       224850    人
  • 解答问题       663    个

本课程通过一个案例,讲解Ajax的相关概念原理实现方式和应用

进入课程

下载过里的文件Jsonp那个不能用,一直跳发生错误:200,弹框

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信