Search code examples
javascriptphpjqueryasp.netviewbag

Calling php scripts with parameters and setting result in viewbag


I'm having trouble calling php scripts from Java Script and then using that result to set view bag values for my controller. Here is the code behind:

<script>
var model = '<% = this %>';
var data = { NAMEPARAM: model.name }

$(document).ready(function () {
$("#AlertButton").click(function () {
    $.ajax({
        type: 'POST',
        url: "www/CustomScripts.php",
        data: data
    }).success(function(data) {
        //need to set the returned message in view bag here.
    }).error(function (data) {
         alert("An error occurred while processing request")
        });
    });
});
</script>

<button id ="AlertButton" type="submit" class="btn green"> Alert </button>
<div id="PHPResult"> @ViewBag.message </div>

The problem I'm facing above, is to set the returned success message, in my ViewBag and then showing it on the screen. I know how to directly set the result inside the html div, but I need to set it inside the Viewbag

Also the way that I'm passing the name parameter to the php script. Is that the correct way, or is there a better way to accomplish that?


Solution

  • I can't think of a reason to involve the ViewBag here. You're not doing a postback to MVC, so there's no way to populate it. It's a transaction between the HTML/Javascript and the PHP webservice only.

    So, it's actually relatively simple:

    <script>
    var model = '<% = this %>';
    var data = { NAMEPARAM: model.name }
    
    $(document).ready(function () {
      $("#AlertButton").click(function () {
        $.ajax({
          type: 'POST',
          url: "www/CustomScripts.php",
          data: data
        }).success(function(data) {
         $("#PHPResult").html(data); //assuming "data" is a user-friendly string
        }).error(function (data) {
          alert("An error occurred while processing request")
        });
      });
    });
    </script>
    
    <button id ="AlertButton" type="submit" class="btn green"> Alert </button>
    <div id="PHPResult"></div>