課程
/前端開發
/JavaScript
/Ajax全接觸
下載過里的文件Jsonp那個不能用,一直跳發生錯誤:200,彈框
2016-04-14
源自:Ajax全接觸 6-2
正在回答
刪除上面的,就不能跨域了
mdzz。。試了好久。。原來我配置的環境中連8080端口都沒有開,服務器怎么訪問你呢?
這個跨域的例子需要在一臺電腦上一個服務器開2個端口,當然指的是后臺用php的,,,之前我用nodejs開的不行的。。
就這個例子而言,我使用的是wamp開2個端口,然后使用jsonp技術跨域訪問,老師使用的方法沒有問題,只是路徑要改一下,改成本機的對應的路徑就OK了。當然你如果不跨域訪問,也可以像樓上一樣更改
已經找出錯誤,并修正。
看看是否是下面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.,同事也要刪除''中的()號。
吧主的問題就是這個()號引起的,將其刪除,應該就可以正常運行了。
qq_喬小瑪_0
我的也是錯誤,錯誤提示:
Request Header下提示:
Provisional headers are shown。
將其改動成XHR2,還是會出現這個錯誤。
type為get時候 ?dateType為"jsonp"
我就改了里面的PHP鏈接地址
舉報
本課程通過一個案例,講解Ajax的相關概念原理實現方式和應用
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-06-26
刪除上面的,就不能跨域了
2016-06-20
mdzz。。試了好久。。原來我配置的環境中連8080端口都沒有開,服務器怎么訪問你呢?
這個跨域的例子需要在一臺電腦上一個服務器開2個端口,當然指的是后臺用php的,,,之前我用nodejs開的不行的。。
就這個例子而言,我使用的是wamp開2個端口,然后使用jsonp技術跨域訪問,老師使用的方法沒有問題,只是路徑要改一下,改成本機的對應的路徑就OK了。當然你如果不跨域訪問,也可以像樓上一樣更改
2016-05-07
已經找出錯誤,并修正。
看看是否是下面2個問題:
1.URL地址錯誤:
jqueryjsonp.html文件中,ajax文件中的URL地址是否對應,如果不對應,會出現錯誤:
這種情況,是url地址錯誤導致。
解決方法:
查看url地址是否正確。
上面的url端口號為8000,我本地的端口號是80,因此需要改端口號為本地的端口號。(視頻中使用軟件做服務器時因為端口沖突,改過端口后,因此本地測試時需要進行調整。)
路徑是否正確。根目錄下的ajaxdemo文件夾下,這里我的本地目錄是在ajax文件夾下,因此也需要進行相應修改。
修改過后的正確的url地址為:
2. 服務器文件serverjsonp文件錯誤。
將文件里修改過的jsonp內容還原為json內容時,改動錯誤,會導致alert錯誤(提示“發生錯誤:200”)。
這時,調試面板Network里具體頁面的header選項卡頁面里,明明顯示status為200,應該已經成功了,為啥還會彈出200錯誤呢?而且Response選項卡頁面里,也是有成功信息的,為啥還會錯誤呢?
原因:serverjsonp文件錯誤
解決方法:
修改serverjsonp文件:
將上述代碼改為:
注意改動位置:
吧主的問題就是這個()號引起的,將其刪除,應該就可以正常運行了。
2016-05-06
我的也是錯誤,錯誤提示:
Request Header下提示:
Provisional headers are shown。
將其改動成XHR2,還是會出現這個錯誤。
2016-05-02
type為get時候 ?dateType為"jsonp"
2016-04-14
我就改了里面的PHP鏈接地址