How to call ajax again when user click back button to go back last webpage?

First of all, you should save data received from ajax request to browser local storage. Afterwards, in order to show ajax result when browser "back" button was fired, you should bind statements that you are calling in ajax.success() method to window onpopstate event. To omit code duplication, it`s better to use a declared function instead of anonymous one.

function success(response) {
    alert("Hi");
    $("option", $("#q_subject")).remove();
    var option = "<option>Subject1</option>"; 
    option += "<option value=1234>Subject2</option>"; 
    $("#q_subject").append(option); 
}

Save data to localstorage and call success function:

 $.ajax({
      url: "api.path",
      type: 'POST',
      dataType: 'json',
      data: {id: id},
      async: true,
      cache: false,
      success: function(response) {
          localStorage.setItem("response", response);
          success(response);
      }
    });

Call success() when "back" button was fired:

window.onpopstate = function (e) {
    var res = localStorage.getItem('response');         
    success(res);
}

I would rather suggest you to use sessionStorage which expires when the browser window is closed :)

 $.ajax({
          url: "api.path",
          type: 'POST',
          dataType: 'json',
          data: {id: id},
          async: true,
          cache: false,
          success: function(response) {
              sessionStorage.setItem("DataSaved", response);
              success(response);
          }
        });

And then

window.onpopstate = function (e) {
    var res = sessionStorage.getItem('DataSaved');         
    success(res);
}