In this article I’ll demonstrate how to insert record in Salesforce object by using javascript, in VF page without any standard or custom controller or by apex class.
By using AJAX Toolkit we can do this task easily. There are two types of AJAX Toolkit one is synchronous and another one is asynchronous call.
Here is a simple example of data insert using Javascript in Visualforce page. In below example I’m using synchronous call.
These are the steps to insert data using Javascript:
Connecting to the AJAX Toolkit(By using login methods or getting Session_ID).
Embedding the API methods in JavaScript.
Processing the results.
Sample Code:
<apex:page id="pg">
<script src="/soap/ajax/20.0/connection.js" type="text/javascript"></script>
<script>
function insertAcc(){
// Getting Session ID.
sforce.connection.sessionId = "{!$Api.Session_ID}";
//Creating New Account Record.
var account = new sforce.SObject("Account");
//Getting Account Name from inputText.
account.Name = document.getElementById("pg:frm:pb:pbs:pbsi:txtName").value;
//Create method
var result = sforce.connection.create([account]);
//Getting result
if (result[0].getBoolean("success")) {
alert("New Account is created with id " + result[0].id);
}
else {
alert("failed to create new Account " + result[0]);
}
}
</script>
<apex:form id="frm">
<apex:pageBlock title="Insert Account" tabStyle="Account" id="pb">
<apex:pageBlockSection title="Account Name" columns="1" id="pbs">
<apex:pageBlockSectionItem id="pbsi">
<apex:outputLabel value="Name" />
<apex:inputText title="Name" id="txtName" />
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
<apex:pageBlockButtons>
<apex:commandButton onclick="return insertAcc();" value="Save"/>
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
Global Picklist or Picklist Value Set is an Universal Picklist Values, which can be applied to any custom picklist fields that you create both on standard and custom objects.
Lets take an example, I have an object called “Student” and “Student Application” in these two object I have to create a picklist field called “Language”. So, here I’ve created a “Picklist Value Set” and used it on both object “Student Application”.
Click Setup || App Setup || Create || Picklist Value Set || Click ‘New’
Create “Language” Picklist Value Set:
Create “Language” Picklist from Picklist Value Set in “Student” and “Student Application” object:
Check “Language” Picklist Value Set, where it is used:
Note: You can have up to 500 picklist global value sets in an org. Each global value set, or restricted picklist, can contain a mix of 1,000 active and inactive values. Unrestricted picklists can have up to 1,000 active values. There’s no limit on the number of custom picklists that use global picklist value sets.
Picklist Value Set Considerations:
Validation rules are still defined at the field level, and are not part of the Picklist Value Set definition. This means, you can have the Business Unit picklist field on Account to respect a validation rule; and the same field on the Contact object not.
It is possible to create a mutli-select picklist field using a Picklist Value Set definition. However, in such cases the “replace” functionality available on regular picklist fields are not available.
Also, a picklist field created based on a Picklist Value Set cannot be used as a dependent picklist. It can still be used as a controlling picklist field. This is a known and documented limitation.
//Create a new account called "Test Account" that we will create a link for later.
Account acc = new Account(Name = 'Test Account');
Insert acc;
//Get the base URL.
String baseURL = URL.getSalesforceBaseUrl().toExternalForm();
System.debug('Base URL: ' + baseURL);
//Get the URL for the current request.
String currentReqURL = URL.getCurrentRequestUrl().toExternalForm();
System.debug('Current request URL: ' + currentReqURL);
//Create the account URL from the base URL.
String accURL = URL.getSalesforceBaseUrl().toExternalForm() + '/' + acc.Id;
System.debug('URL of a particular account: ' + accURL);
//Get some parts of the base URL.
System.debug('Host: ' + URL.getSalesforceBaseUrl().getHost());
System.debug('Protocol: ' + URL.getSalesforceBaseUrl().getProtocol());
//Get the query string of the current request.
System.debug('Query: ' + URL.getCurrentRequestUrl().getQuery());
public class Child{
public String Name;
public Child(String name) {
this.Name = name;
}
}
Parent Class:
public class Parent{
public Child[] ChildRecords;
public String Name;
public Parent(String Name) {
this.Name = name;
ChildRecords = new Child[0];
}
}
Pass parameters to above class using below code:
//Select Account Id from Account Object
String accountId = '0012800001A4UgG';
//Select Account & Contact Records
Account acc = [SELECT Id, Name, (SELECT Id, Name FROM Contacts) FROM Account WHERE Id =: accountId];
//Create a parent record
Parent par = new Parent(acc.Name);
//Loop on Contacts
for(Contact con: acc.Contacts) {
par.childRecords.add(new Child(con.Name));
}
//Get the Json data
String jsonData = JSON.serialize(par);
System.debug('JsonData-' + jsonData);
Here is the debug log snapshot of Json data:
Note: This is the sample class. You can modify it as per your requirement.
The value returned when an external ID exists in more than one record. The response body contains the list of matching records.
304
The request content has not changed since a specified date and time. The date and time is provided in a “If-Modified-Since” header.
400
The request could not be understood, usually because the ID is not valid for the particular resource. For example, if you use a userId where a groupId is required, the request returns 400.
401
The session ID or OAuth token has expired or is invalid. Or, if the request is made by a guest user, the resource isn’t accessible to guest users. The response body contains the message and errorCode.
403
The request has been refused. Verify that the context user has the appropriate permissions to access the requested data, or that the context user is not an external user.
404
Either the specified resource was not found, or the resource has been deleted.
405
The method specified in the Request-Line isn’t allowed for the resource specified in the URI.
409
A conflict has occurred. For example, an attempt was made to update a request to join a group, but that request had already been approved or rejected.
412
A precondition has failed. For example, in a batch request, if haltOnError is true and a subrequest fails, subsequent subrequests return 412.
415
The entity in the request is in a format that’s not supported by the specified method.
500
An error has occurred within Force.com, so the request could not be completed. Contact Salesforce Customer Support.
503
Too many requests in an hour or the server is down for maintenance.
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptReject