1

我有一个从数据库中获取 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 错误,说“意外令牌非法”。如何为 onclick 函数提供 details_arr[i] 的值?请帮忙。

4

5 回答 5

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();

请注意,我使用了一个闭包来确保 i 在回调中具有所需的值(而不是迭代结束时的值)。

小心拆分:在大多数浏览器"+aaa".split('+')["", "aaa"],由于您不会迭代到数组的末尾,因此这个示例字符串会让您什么都不迭代。

于 2012-12-14T09:00:22.010 回答
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 服务

于 2012-12-14T09:45:34.530 回答
1

我会使用类似的东西, bare in mind ID must be unique inside a document (HTML Page) 因为内容是动态生成的;最好使用 JQuery “on”

   $(".pname").on("click", function (event) {
       saveName($(this).text());
   });

绑定点击事件的事件处理程序

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 次

于 2012-12-14T10:29:38.663 回答
0

你应该告诉你出错的那一行

我认为您没有在 ajax 调用中指定您的 Web 服务...“url:”searchprofile.php”

于 2012-12-14T09:14:00.283 回答
0

终于让onclick功能工作了。:)

我不是每次都添加 div,而是通过在 ajax 返回的数据中添加我需要的 html 来编辑我的 php 页面。

于 2012-12-17T06:35:03.487 回答