我有两个输入与On Change ajax调用绑定。
<input type="email" id="lookupemail" style="width: 225px;" placeholder="john.smith@ufcfit.com">
<select id="type" style="width: 150px;">
<option value="member"> Member </option>
<option value="lead"> Lead </option>
</select>
ajax调用工作正常,但似乎没有通过我的查找类型..我的输出格式是否错误?
<script>
$("#lookupemail").keyup(function () {
var lookuptype = $('#type').val();
var lookupinput = $('#lookupemail').val();
$.ajax({
type: "POST",
url: "includes/dbsearch.php",
data: {lookuptype: lookupinput},
success: function(server_response)
{
if(server_response != 0) {
//
} else {
//
}
}
});
});
</script>
通过:
lookuptype:"conner@asdsafsdf"
而不是.. 构件:&#34;康纳@ asdsafsdf&#34;
答案 0 :(得分:1)
而不是:
data: {lookuptype: lookupinput},
使用类似:
data: {lookuptype: lookuptype, lookupemail: lookupinput},
当使用对象作为ajax调用的data
值时,您必须提供key/value
对。在您的情况下,您提供了一个键= lookuptype
和一个值= whatever-the-user-types-in-email-field
。您没有为key/value
发送email
对。
在服务器端,您可以使用以下键检索数据:
$lookuptype = $_POST['lookuptype'];
$lookupemail = $_POST['lookupemail'];
注意强>
如果您打算让lookuptype
选择单个key/value
对的密钥,那么您必须声明一个对象操作它:
var lookuptype = $('#type').val();
var lookupinput = $('#lookupemail').val();
var fData = {}; //<<<<<======
fData[lookuptype] = lookupinput; //<<<<<<======
$.ajax({
type: "POST",
url: "includes/dbsearch.php",
data: fData, //<<<<<<<=========
答案 1 :(得分:0)
如果要将对象作为数据参数传递,并将变量作为属性名称,则必须执行以下操作:
var ajaxData = {};
ajaxData[lookuptype] = lookupinput;
总的来说,你应该这样做:
$("#lookupemail").keyup(function () {
var lookuptype = $('#type').val();
var lookupinput = $('#lookupemail').val();
// Create the data object
var ajaxData = {};
ajaxData[lookuptype] = lookupinput;
$.ajax({
type: "POST",
url: "includes/dbsearch.php",
data: ajaxData,
success: function (server_response) {
if (server_response != 0) {
//
} else {
//
}
}
});
});
既然你知道如何做到这一点,那么我告诉你,这是一个坏主意,因为服务器不知道要传递给它的数据中要查找的属性。做PeterKA建议的事情会更好。