1

キーアップイベントでデータベースからレコードを取得する機能があります。これが私のコードです:

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エラーが発生します。details_arr [i]の値を使用してonclick関数を指定するにはどうすればよいですか?助けてください。

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

クロージャを使用して、コールバックに必要な値(反復終了時の値ではない)があることを確認したことに注意してください。

分割に注意してください。ほとんどのブラウザで"+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を「オン」で使用することをお勧めします

   $(".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回呼び出されます-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 に答える