我有一个从keyup事件中获取数据库记录的函数。 这是我的代码:
function displaySearch(key) {
$.ajax({
type:"POST",
url:"searchprofile.php",
data:{
k:key
},
success:function(data){
var details_arr=data.split("+");
$('.searchresult').empty();
for(var i=0;i<details_arr.length-1;i++){
$('.searchresult').append("<div class='profile' id='searchprofile'><img class='profilepic' src='images/profile.jpg'/><div class='doctorname'><div class='pname' onclick='saveName("+details_arr[i]+")'>"+details_arr[i]+"</div></div></div>");
$('.searchresult').show();
$('.searchresult .profile').show();
}
details_arr.length=0;
}
});
}
但是我在这里收到javascript错误说“Unexpected token ILLEGAL”。 如何使用details_arr [i]的值给onclick函数? 请帮忙。
答案 0 :(得分:4)
正如你有jQuery,你真的不应该内联代码。正如您所看到的那样,处理引用字符串中的引号变得更加困难(是的,您在saveName
的参数周围缺少引号。)
你可以这样做:
(function(i){
$('.searchresult').append(
"<div class='profile' id='searchprofile'>"
+ "<img class='profilepic' src='images/profile.jpg'/>"
+ "<div class='doctorname'>"
+ "<div id=someId class='pname'>"+details_arr[i] // <- give some Id
+"</div></div></div>"
);
$('#someId').click(function(){saveName(details_arr[i])});
})(i);
$('.searchresult').show();
请注意,我使用了一个闭包来确保我在回调中具有所需的值(而不是迭代结束时的值)。
请注意拆分:在大多数浏览器上"+aaa".split('+')
生成["", "aaa"]
并且当您不迭代到数组的末尾时,此示例字符串将使您无需迭代。
答案 1 :(得分:1)
function openNow(x)
{
var pageUrl = '<%=ResolveUrl("~/OnFriends.php")%>'
$.ajax({
type: "POST",
url: pageUrl + '/CreateNew',
data: '{k: "'+ x +'"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success:function(data)
{
<---Now Do Your Code Hear--->
}
});
}
CreateNew是我在.php文件中创建的Web服务
答案 2 :(得分:1)
我会使用类似的东西
bare in mind ID must be unique inside a document (HTML Page)
因为内容是即时生成的;最好使用JQuery“on”
$(".pname").on("click", function (event) {
saveName($(this).text());
});
用于绑定click事件的事件处理程序
function displaySearch(key){
$.ajax({
type: "POST",
url: "searchprofile.php",
data: {
k: key
},
success: function(data) {
var details_arr = data.split("+");
var searchResults = "";
for (var i = 0; i < details_arr.length - 1; i++) {
searchResults += "<div class='profile'>" +
"<img class='profilepic' src='images/profile.jpg'/>" +
"<div class='doctorname'>" +
"<div class='pname'>" + details_arr[i] +
"</div></div></div>";
}
$('.searchresult').html(searchResults).show();
}
});
}
$(".pname").on("click", function (event) {
saveName($(this).text());
});
使用Jquery html替换循环外的searchresult内的所有内容 将被调用一次而不是details_arr.length - 1次
答案 3 :(得分:0)
你应该告诉你出错的那一行
我认为您没有在ajax调用中指定您的Web服务... “URL:” searchprofile.php“
答案 4 :(得分:0)
最后让onclick功能正常工作。 :)
不是每次都附加div,而是通过在ajax中返回的数据中添加我需要的html来编辑我的php页面。