2016-04-25 6 views
0

Я делаю систему комментариев в реальном времени в Asp.net Webforms ajax jquery .... У меня есть ретранслятор, где у меня есть один текстовый блок и одна кнопка ... я хочу просто вставить через Ajax JQuery, но JQuery AJAX не обнаружил TextBox, который объявлен внутри управления Repeater ...Как получить текстовое поле репитера в jquery ajax

сценарий:

$(document).ready(function() { 
     $('#btnComment').click(function() { 

      $.ajax({ 
       type: "POST", 
       url: "index.aspx/insertComment", 
       data: '{comtext: "' +txtComment.value + '"}', 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (data) { 
        alert("ok"); 
        //$('#txtComment').val(""); 
       } 
      }); 
     }); 
    }); 
</script> 

, когда я отладки сценария я проблему с данными .. ..txtComment.value ... , но когда i tr y для TextBox вне ретранслятора: данные: '{comtext: "' + $ (" # <% = txtComment.ClientID%> ") [0] .value + '"}' , тогда он работает для меня, но не Findout TextBox внутри Repeater

Код Behind:

[WebMethod] 
    public static string insertComment(string comtext) 
    { 

     //Button btnComment = sender as Button; 
     //RepeaterItem item = btnComment.NamingContainer as RepeaterItem; 
     //TextBox txtComment = item.FindControl("txtComment") as TextBox; 
     //lblMsg.Text = txtComment.Text; 
     SqlConnection con = new SqlConnection("data source=RIO;initial catalog=SocialNetworkSite;integrated security=true"); 
     SqlCommand cmd = new SqlCommand("insert into Comment (comtext) values ('" + comtext + "')", con); 

     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

     return comtext; 
    } 

пожалуйста ПОМОГИТЕ

+1

Вы делаете это неправильно. Ваш WebMethod не может и не должен получать доступ к элементам управления со страницы. Чтобы ответить, почему ваш jQuery не может найти '# txtComment', вам нужно будет показать, как вы его создали. Скорее всего, идентификатор на стороне клиента не соответствует ожидаемому. – mason

+0

это TextBox, который я хочу получить в скрипте, но не могу ... и я не очень хорошо знаю о jquery, но я думаю, что это можно сделать с помощью обхода ..... Я пробовал это ... var textBoxValue = $ (this) . .closest ("ДИВ") найти ("#") txtComment вал(). данные: '{comtext: "' + textBoxValue + '"}' но он показывает ..... textBoxValue = неопределенный ........ пожалуйста, помогите мне – Heartlion

+0

Как я уже сказал, посмотрите на ваш идентификатор вашего текстового поля на стороне клиента. Что yuou sert в разметке ASPX не обязательно то, что вы получаете на результирующей странице. – mason

ответ

0

$("#MyRepeater").on("click", ".MyButton", function() { 
 
    var textBoxValue = $(this).closest("tr").find(".MyTextBox").val(); //$("#MyTextBox").val(); 
 
    $.ajax({ 
 
    type: "POST", 
 
    url: "index.aspx/insertComment", 
 
    data: '{comtext: "' + textBoxValue + '"}', 
 
    contentType: "application/json; charset=utf-8", 
 
    dataType: "json", 
 
    success: function(data) { 
 
     alert("ok"); 
 
     //$('#txtComment').val(""); 
 
    } 
 
    }); 
 
})

[WebMethod] 
public static string insertComment(string MyTextboxValue) 
{ 

    // Button btnComment = sender as Button; 
    // RepeaterItem item = btnComment.NamingContainer as RepeaterItem; 
    // TextBox txtComment = item.FindControl("txtComment") as TextBox; 
    //lblMsg.Text = txtComment.Text; 

    SqlConnection con = new SqlConnection("data source=RIO;initial catalog=SocialNetworkSite;integrated security=true"); 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("insert into Comment (comtext) values ('" + MyTextboxValue + "')", con); 
    try 
    { 
     cmd.ExecuteNonQuery(); 
     return "Success"; 
    } 
    catch (Exception ex) 
    { 

     return ex.Message; 
    } 
    finally { 
     con.Close(); 
    } 
} 
+0

$ ("# repeatater1"). On ("click", "#btnComment", function() {....... он не работает для меня, вместо этого я использую $ ('# btnComment'). Click (function() {......., но теперь textBoxValue присваивает "undefined" – Heartlion

0

эта линия работает для меня ..

var textBoxValue = $(this).parent("div").siblings('div').children('.txtComment').val(); 

 Смежные вопросы

  • Нет связанных вопросов^_^