cojimarmiami
cojimarmiami

Reputation: 659

How can I show a message from server side?

I am not a java developer, but my company purchase a product to handle their accounting stuff based on java. Now I am facing a problem because they want to prevent repeated invoices on the system and the software allows the user to do it. I called support and they suggested me to create a suppressed field on the client side, copy on that field the message I want to show and read that field when the user tab to the next field. those are a lot of steps and totally inefficient. Below is my code based on what they suggested. It currently showed me the invoice exist message twice.

server side

CSServer.log (Step)
  if ((CSEvent.getTarget().getName() == "InvoiceNumber") && (CSEvent.getAction() == "Tabout" ) && (Step == 0)) 
    {
      if (!cnn) 
      {
        CSServer.log ("GPCONNECT Lookup::CSForm_OnValidateLookup Connection to the database failed");
      } 
      else 
      {
        Sql  = "SELECT COUNT (*) as Result FROM [DYNAMICS].[dbo].[AP_Invoice_Table] WHERE [VendorID] = '" + CSForm.getField("VendorID").getValue() + "' and [DocumentNumber] = '" + CSForm.getField("InvoiceNumber").getValue()+"'";
        resultInvSet = cnn.executeSQL(Sql);
        var x =null;
        x = resultInvSet.getValue("Result");
      }
      if (x > 0) 
      {
        CSForm.getField("msg").setValue("Invoice number already exist, please check your entry!");
        return false;
      } 
      else
      {
        CSForm.getField("msg").setValue("");
      }
    }

client side

function InvoiceAmount_OnFocus()
{
  var m =CSForm.getField('msg').getValue();
  if (m != "")
  {
    $("#InvoiceNumber").focus();
    CSClient.alert(m);
    CSForm.getField("InvoiceNumber").setFillColor("FF0000");
  }
  else
  {
  CSForm.getField("InvoiceNumber").setFillColor("FFFFFF");
  }
  return true;
}

Could someone please showed me the right way to handle this?

Update: Client and server use SOAP and HTTP call to communicate.

Upvotes: 4

Views: 796

Answers (2)

ragerory
ragerory

Reputation: 1378

Create a webmethod that you call via AJAX and pop the javascript alert based on the result of that function.

example (in your .aspx page):

        function doSomething(id) {
            $.ajax({
                type: "POST",
                url: "Do_Something.aspx/DoSomething?id=" + id,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    alert(response);
                }
            });

In Do_Something.aspx.cs:

    [WebMethod]
    public static string DoSomething(string id)
    {
        var docs = SqlHelper.SelectAllByInvoiceId(id);
        if (docs.Count > 0)
        {
            return "exists";
        }
        return "does not exist";
    }

Upvotes: 2

RSSHAH
RSSHAH

Reputation: 69

Step 1: Create AJAX function to talk to server side function. Step 2: Return message from server side function and handle that in AJAX function (success or done). Step 3: Alert message if ajax function catches any result.

For ajax implementation you can refer: http://www.w3schools.com/jquery/ajax_ajax.asp Or http://api.jquery.com/jquery.ajax/

Upvotes: 1

Related Questions