lordterrin
lordterrin

Reputation: 171

grab php output using javascript in table

I have an HTML table that is generated from php. I utilize javascript to do something when someone selects a particular answer in a dropdown. The part of the table I care about is here:

<td style="display:none;">
<?= $lineID ?>
<value="<?= $lineID ?>"></td>

<td>
<?= $resolution ?><br>
<value="<?= $resolution ?>">                    
<select name="resolution[]" class="inputbox" onchange="submitResolution(this.value)">               
<option value="null">
</option>               
<option value="nightmareAlias.php">ADD NEW ALIAS</option>
<option value="NO PROBLEM">NO PROBLEM</option>
</td>

and here's the script that is actioned when someone selects "ADD NEW ALIAS"

<script>
function submitResolution(str) {
  console.log(str);  
  if (str =="nightmareAlias.php") {

      document.getElementById("txtHint").innerHTML="";
      $("#txtHint").load(str);
      return;     
  }
}
</script>

Right now - this works just fine. When someone selects ADD NEW ALIAS, they are redirected to the nightmareAlias.php page. When that page loads, I need to find a way to not just submit(this.value), but to almost submit the lineID of the line on the table that the person is actioning.

How do I pass this value along as well?

Upvotes: 0

Views: 55

Answers (1)

Matt
Matt

Reputation: 750

<select name="resolution[]" class="inputbox" data-lineid="<?= $lineID ?>" onchange="submitResolution(this)">                              
    <option value=""></option>
    <option value="nightmareAlias.php">ADD NEW ALIAS</option>
    <option value="NO PROBLEM">NO PROBLEM</option>
</select>

You need to make the line ID available, I've included it as an attribute in the select tag. Then pass this as a parameter rather than this.value so that you can access the object in its entirety.

<script>
    function submitResolution(sel) {
        console.log(sel);  
        if (sel.value === "nightmareAlias.php") {
            document.getElementById("txtHint").innerHTML="";
            $("#txtHint").load(sel.value + '?lineID=' + $(sel).data('lineid'));
            return;     
        }
    }
</script>

Then add a query parameter to the URL. You will need to handle a GET request for lineID within nightmareAlias.php.

Note the use of === rather than ==, it would also be worth separating your JavaScript and HTML more. For what you're trying to do here I would have probably used .change()

Upvotes: 1

Related Questions