2013-11-10 178 views
1

我想用ajax做一個API GET請求。我有一個jquery函數從第一個輸入字段獲取api鍵值,然後在輸入字段#2 url + api key上顯示連接結果。我需要獲取第二個輸入字段中顯示的值的獲取請求。我怎樣才能完成這個獲取請求?目標服務器設置爲允許跨域腳本SITEAPI AJAX獲取請求

<script> 
$(document).ready(function() { 
    $(document).ready(function() { 

    /** get the inputs we might need */ 
    var $result = $('#result'); 
    var $input = $('#input'); 

    $result.data('url', $result.val()); 
    var timer; 

    /** function to submit data to the server and 
     update the result input on success */ 
    function submitForm(input, newValue) { 
    $.ajax({ 
     type: "POST", 
     url: "/concatenate/index.php", 
     data: {input:input}, 
     success: function (data) { 
     $result.val(newValue); 
     } 
    }); 
    }; 

    /** on key up, fill #result with the url + input */ 
    $input.bind('keyup', function() { 
    var $this = $(this); 
    var inp = $this.val(); 
    var url = $result.data('url'); 
    var newValue = url + inp + '/'; 

    if(timer) { clearTimeout(timer); } 
    timer = setTimeout(function(){ 
     submitForm(inp, newValue) ; 
    }, 40); 
    return false; 
    }); 

}); 
}); 
</script> 

</head> 
<body> 

<h1>Enter a word:</h1> 

<form action="index.php" method="post"> 
API Key: <input type="text" id="input" name="input"></br> 
Concatenated Url + API: <input type="text" style="width:200px;" id="result" name="result" value="http//www.example.com/"></br> 
</form> 
+0

如果url是與運行腳本的域不同的域,那麼除非目標服務器設置爲允許跨域腳本(默認情況下服務器沒有像這樣設置),否則它將不起作用。這是跨站點腳本(請閱讀相同的域源策略) –

+0

@CrayonViolent目標服務器設置爲允許跨域腳本編寫 – techAddict82

回答

2

我相信有可能是很多其他的方法可以做到這一點,但在我的頭上冒出的第一個想法是要在其中創建級聯網址submitForm。理由是,到達超時時間並準備好進行ajax調用時,您需要在該時刻抓取input字段中的任何內容,以確保您擁有最「最新的」值(儘可能多)。所以也許這樣的事情:

// Note: I've ditched the parameters because they are no longer needed 
// We're getting the values that the parameters contained in this function 
function submitForm() { 
    var inp = $("#input").val(); 
    var url = $("#result").data('url'); 
    var concatenatedUrl = url + inp + '/'; 

    $.ajax({ 
    type: "GET", 
    url: concatenatedUrl, 
    data: {input:input}, 
    success: function (data) { 
     $result.val(newValue); 
    } 
    }); 
} 

希望有所幫助。請讓我知道我是否誤解了這個問題。

+0

我正在嘗試使用「url + apikey」執行GET操作並顯示結果 – techAddict82

+0

@ techAddict82對不起忘了。儘管如此,您只需將'type'更改爲「GET」即可。你到底有什麼問題? –

+1

想通了。謝謝! – techAddict82