DiDi
DiDi

Reputation: 110

consuming webservice in Jquery

I used a Jquery truncator solution which is neatly written by Henrik Nyh to have a read more/less functionality. The script here

I wanted to modify this code to be able to keep track of read/unread status by updating database. I worote the code that does the database update in a webservice as follows.

[WebMethod]

public void updateReadStatus(int ID)
{
//code to update the database
}

I added the following to consume the webservice in the Jquery

    function updateStatus(){
            $.ajax({
                type: "POST",
                url: "WebServices/myWebService/updateReadStatus",
                data: "{'ID': " + $("#lblID").Text + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                error: OnError
            });

function OnSuccess(reuslt) {
              alert(result.d);
            }

function OnError(result) {
              alert(result.status + ' ' + result.status);
            }
        }

//and i called this function on this line 

  full_node.find('a:last').click(function() {
  truncated_node.show(); updateStatus(); full_node.hide(); return false;

 //The user control that im using this scrip on has a repeater that contains a div that contains the paragraph to be truncated.

 <div class="readmore">
 <%# Eval("Message_Text")%>
 <asp:Label ID="lblID" runat="server" visible="false"
 </div>

The truncate script works fine and it gave me the functionality i want, read more/less. But i am not able to get the added functionality i wanted. I am getting "12030 unknown" error, i believe the problem is in the line data:

"{'ID': " + $("#lblID").Text + "}", 

how can I bring the value of the parameter ID from the text value of the lable to pass it to the webservice?

Upvotes: 1

Views: 195

Answers (2)

Adam Rackis
Adam Rackis

Reputation: 83358

text is a function, not a property, so you need to call it with ():

"{'ID': " + $("#lblID").text() + "}", 

Also, if you want to call a given WebMethod via Ajax, you'll need to decorate it with the [ScriptMethod] attribute.

Upvotes: 2

Artefacto
Artefacto

Reputation: 97805

You don't say what lblID identifies, but you should either be doing:

$("#lblID").text()

or

$("#lblID").val()

See http://api.jquery.com/text/ and http://api.jquery.com/val/

Upvotes: 1

Related Questions