2

我有以下一段代码

$("#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 函数,但不确定如何编码从表单元素获取的数据

4

4 回答 4

1

你可以使用序列化

它将一组表单元素编码为提交的字符串。

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>
于 2013-04-12T05:23:59.087 回答
0

jQuery $.ajax默认 contentType 是application/x-www-form-urlencoded这意味着 jQuery 将对内容进行编码。但是,由于您指定了不同的 contentType,因此不会对数据进行编码,因此您必须自己进行编码。(jquery ajax 编码数据

尝试encodeURIComponent。(URL 为 AJAX 请求在 jQuery 中编码一个字符串

通过将特定字符的每个实例替换为表示字符的 UTF-8 编码的一个、两个、三个或四个转义序列来编码统一资源标识符 (URI) 组件(对于由两个“代理”组成的字符,只有四个转义序列“ 人物)。

例子:

var 编码 = encodeURIComponent(str);

完整的解决方案:

<!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 ";
?>
于 2013-04-12T06:36:05.820 回答
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()的页面上。

于 2013-04-12T05:50:04.333 回答
0

这是$.get的文档。您传递给它的数据可以是 JS 对象或字符串。字符串基本上key=val是表单元素的编码表示。使用 jquery 表单元素上的serialize方法来获取这样的字符串。希望有帮助!

于 2013-04-12T05:23:04.837 回答