2013-04-12 2 views
2

я следующий кусок кодаотправки запроса GET в Jquery

$("#autocomplete").autocomplete({ 
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"], 
    close: function (event, ui) { 
     alert($(this).val()); 
    } 
}); 



<label for="autocomplete">Select a programming language:</label> 
<input id="autocomplete"> 

Как отправить значения, которые я получаю как функция GET? Я прочитал функцию Ajax GET, но я не уверен, как кодировать данные, которые я получаю от элемента формы.

ответ

0

Это документация к $.get. Данные, которые вы передаете, могут быть либо JS-объектом, либо строкой. Строка в основном кодируется key=val представлением элементов формы. Используйте метод serialize в элементе формы jquery, чтобы получить такую ​​строку. Надеюсь, это поможет!

1

вы можете использовать Serialize

будет кодировать набор элементов формы в виде строки для представления.

http://api.jquery.com/serialize/

и это, как вы можете сделать его

<form id="myform"> 
    <label for="autocomplete">Select a programming language:</label> 
    <input id="autocomplete" name="autocomplete"> 
    <input type="button" id="btnSubmit" value="send"> 
</form> 

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

    $("btnSubmit").click(function(){ 
     $.ajax({'url':'myurlforajaxrequest', 
       'data': $("#myform").serialize(), 
       'type':'get' 
       }); 
    }); 

}); 
</script> 
0

Это зависит от того, какой сценарий вы отправляете его ожидает, но $.get() принимает более одного формата данных. Это может быть простая строка или объект.

Например, если ваш скрипт ожидает programminglanguage переменных в запросе, ваш близкий обработчик может выглядеть следующим образом

$("#autocomplete").autocomplete({ 
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"], 
    close: function (event, ui) { 
     var jqxhr = $.get("/my/script.php", "programminglanguage=" + $(this).val()); 
     // Alternatively: 
     //var jqxhr = $(.get("/my/script.php", {"programminglanguage": $(this).val()}); 
    } 
}); 

$.get() функция имеет обработчик аргумент успеха, который вы можете захотеть использовать и свойство Возвращаемый объект jqxhr задокументирован на странице jQuery.ajax() страница here.

0

JQuery $ .ajax по умолчанию CONTENTTYPE является применение/х-WWW-форм-urlencoded который означает JQuery будет кодировать содержимое. Однако, поскольку вы указали другой тип contentType, данные не закодированы, поэтому вам нужно сделать свою собственную кодировку. (Jquery ajax encoding data)

Пробег encodeURIComponent. (URL Encode a string in jQuery for an AJAX request)

Зашифровывает унифицированный идентификатор ресурса (URI) компоненту путем замены каждого экземпляр определенных символов на один, два, три, или четыре побеге последовательности, представляющей кодировку UTF-8 символ (будет только - четыре escape-последовательности для символов, состоящих из двух символов «суррогат» ).

Пример:

вар кодируются = encodeURIComponent (ул);

Полное решение:

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"/> 
<title>jQuery UI Autocomplete - Default functionality</title> 
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css"/> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script> 
<link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css"/> 
<script> 
    $(document).ready(function() { 
    $("#autocomplete").autocomplete({ 
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"], 
    close: function (event, ui) { 
     $.ajax({ 
      url: 'yourAjaxRequestHandleFile.php', 
      data: 'q=' + encodeURIComponent($('#autocomplete').val()), 
      type: 'get', 
      success: function (ajxResponse) { 
       alert(ajxResponse); 
      } 
     }); 
    } 
}); 
    }); 
    </script> 
</head> 
<body> 
<label for="autocomplete">Select a programming language:</label> 
<input id="autocomplete"> 
</body> 
</html> 

// Вот PHP код

<?php 
// Get Send Ajax Data 
$q = $_GET['q']; 
// Show Ajax Data and return to Ajax 
echo "You submitted $q "; 
?> 
Смежные вопросы