鍍金池/ 問答/HTML/ ajax跨域請求失敗是怎么回事?

ajax跨域請求失敗是怎么回事?

小老弟想模仿一個(gè)簡易的百度搜索智能提示的效果,不料跨域請求一直不成功,還請各位老哥指點(diǎn)一二!
代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
    *{margin: 0;padding: 0;}
    ul{list-style-type: none;border: 1px solid #333;width: 252px;border-top: none;display: none;}
    .box{margin: 100px auto;text-align: center;width: 250px;position: relative;}
    input{outline: none;height: 30px;width: 250px;}
    ul li{text-align: left;padding: 4px;}
</style>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

</head>
<body>

<div class="box">
    <form action="" id="">
        <input type="text" name="" value="">
    </form>
    <ul>
        <li>dfsfkj</li>
        <li>dfsfkj</li>
    </ul>
</div>
<script type="text/javascript">
    $("ul").on("mouseover","li",function(){
        $("ul li").css({background: "none"});
        $(this).css({
            background: "#ddd"
        });
    }).on("click","li",function(){
        var value = $(this).html();
        $("input").val(value);
        $("ul").hide();
    });
    $("input").on("keyup",function(){
        $.ajax({
            type: "GET",
            url: "",
            data: {},
            dataType: "jsonp",
            jsonp: "callback",
            success: function(data){
                console.log(data);
            },
            error: function(){
                alert("通信錯(cuò)誤");
            }
        });
        if($(this).val() === ""){
            $("ul").hide();
        } else{
            $("ul").show();
        }
    })
</script>

</body>
</html>

運(yùn)行后有兩個(gè)問題,第一我找不到百度搜索的api,即我不知道url改寫什么。。。
第二我每次觸發(fā)ajax請求的話都會(huì)有這樣的報(bào)錯(cuò)
clipboard.png
還請各位老哥不吝賜教,不勝感激!

現(xiàn)在我把js改成這樣:
$("input").on("keyup",function(){

        var value = $(this).val();
        $.ajax({
            type: "GET",
            // url: "https://www.baidu.com/s?wd=" + value + "&rsv_spt=1&rsv_iqid=0xdb616ebd0001ac06&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduerr&rsv_enter=1&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&inputT=602&rsv_sug4=1700",
            // data: {}
            url: "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=" + value,
            dataType: "jsonp",
            // jsonp: "callback",
            success: function(data){
                alert("done");
            },
            error: function(){
                alert("通信錯(cuò)誤");
            }
        });
        if($(this).val() === ""){
            $("ul").hide();
        } else{
            $("ul").show();
        }
    });

還是會(huì)報(bào)錯(cuò)
clipboard.png
但是當(dāng)我在輸入狂輸入d,在preview里面已經(jīng)可以看到數(shù)據(jù)了!
現(xiàn)在就是怎么解決這個(gè)報(bào)錯(cuò)呢?

回答
編輯回答
話寡

圖片描述

是想做成這效果不?http://blog.csdn.net/b1244154...
百度搜索的API有文檔,需要自己申請

2018年3月13日 12:23
編輯回答
墨沫

樓主要清楚,并不是把不支持跨域的json加個(gè)jsonp就能跨域了,這是要服務(wù)器支持的。

2018年3月24日 14:58
編輯回答
莓森

百度搜索的時(shí)候的地址是不是沒必要寫那么長的一段呀,
URL:https://www.baidu.com/his?wd=...;
wd后面才是你需要傳過去的參數(shù),cb就是回調(diào)函數(shù)呀,這個(gè)可以自定義的,然后在回調(diào)函數(shù)中返回結(jié)果的;
這段地址里面from參數(shù)不變就行了
郁悶,我寫的地址還無法全部解析,愁人
&wd=‘你需要搜的文字’&from=pc_web(這個(gè)隨便,可不加)&cb=xxx(回調(diào)函數(shù)名稱),只能幫你到這里了
對了,你也可以通過查看頁面元素,直接看到地址的

2018年6月28日 02:32
編輯回答
懶洋洋

自己又找了點(diǎn)資料,總算是解決了:

clipboard.png

請求的url是我從別人的代碼里摘下來的,應(yīng)該要去百度申請才行好像,然后就是jsonp的值百度默認(rèn)好像是cp

clipboard.png
clipboard.png

2017年4月16日 20:26
編輯回答
舊言

這個(gè)應(yīng)該跟跨域限制應(yīng)該沒什么關(guān)系, 只是請求的數(shù)據(jù)不是 合法的 js 表達(dá)式 導(dǎo)致 解析出錯(cuò) 請看 具體返回的數(shù)據(jù) 查找問題

2017年2月6日 12:48
編輯回答
我不懂

錯(cuò)誤信息是語法錯(cuò)誤,好好檢查你的代碼

2017年3月11日 04:01