Sign up ×
Salesforce Stack Exchange is a question and answer site for Salesforce administrators, implementation experts, developers and anybody in-between. It's 100% free, no registration required.

I'm trying to pass a JavaScript Variable to my Controller and do a query with the value.

Here's what I got (only necessary code):

My Controller:

public with sharing class MyClass{ 

public String AccountList { get; set; }        
public String myString {get; set;}

// Method for testing a hidden field functionality 
public PageReference myMethod(){
    System.debug('myString: ' + myString);
    return null;
}  

 ...
 public static String getlstAccount() {
    List < Accountwrap > lstwrap = new List < Accountwrap > ();


   String Abfrage='SELECT Id, Name, Phone, BillingCity FROM Account WHERE Id=\''+MyString+'\'';
   List < account > lstacc =  database.query(Abfrage);
   ...}

My VF Page:

<script>
function setVar(param){
jQuery('[id$=myHiddenField]').val(param);
passStringToController();

var List = {!lstacc};
}
</script>     

<apex:form >
    <!-- Hidden field to store a new value of the variable -->
    <apex:inputHidden value="{!myString}" id="myHiddenField"/>

    <!-- Action function for the rerendering -->
    <apex:actionFunction name="passStringToController" action="{!myMethod}" rerender="myHiddenField"/>

    <!-- A command button for sending a call to the function -->
    <apex:commandButton value="Test me" onclick="setVar('new value'); return false;" />
</apex:form>

So I want to set the variable and change the AccountList (dependent on my variable) after the page is loaded.

I got the code for setting the variable in controller from another question, but it seems it doesn't work, and it's always null or empty. I think I'm missing something important.

Thanks in advance!

share|improve this question
    
Are you getting any error in browser console? – Saroj Bera Oct 22 at 16:40
    
No, no error in browser console. I'm very new to SF. I think I have to check the controller logs somehow and update when I found sth which is maybe helpful. – AlexH. Oct 23 at 8:38
    
@SarojBera I looked in logs of controller and it said: VARIABLE_ASSIGNMENT [EXTERNAL]|this|{"myString":"new value". So I guess setting the variable works fine. But my page is loaded when myString is null/empty. Is there any way to get the actual value of my variable after I set it without refreshing the page? And even if I refresh, the Controller refreshs too and the variable is null again? Thanks! – AlexH. Oct 23 at 14:54
    
Okay, I got my mistake... I need to rerender my {!lstacc}. I wasnt confirm with rerendering. Like I said, I'm very new, sorry :). The only thing I want now is to avoid Buttons, but I guess there is a way to rerender from functions? Thanks anyway mates. – AlexH. Oct 23 at 15:14

1 Answer 1

Use jQuery('[id$="myHiddenField"]').val(param);

You seem to have missed the double quotes.

share|improve this answer
    
this is not an issue. Alex has already mentioned he has taken this from another example. Please check this link sravalaparthi.blogspot.in/2014/08/… – Saroj Bera Oct 22 at 16:44
    
Yes, setting the variable works fine I guess, even without the double quotes. – AlexH. Oct 23 at 14:56
    
ok...i think AlexH has got the solution...it can be marked closed :) – San Tosh Oct 24 at 17:24

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.