2016-08-11 1 views
0

Ich habe Probleme beim Aufruf von PHP-Skripte aus Java Script und dann dieses Ergebnis verwenden, um Ansichtsbeutel Werte für meinen Controller zu setzen. Hier ist der Code hinter:Aufruf von PHP-Skripten mit Parametern und Einstellung Ergebnis in Viewbag

<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> 

Das Problem, das ich oben mit Blick auf bin, ist die zurückgegebene Erfolgsmeldung zu setzen, in meinem ViewBag und zeigt es dann auf dem Bildschirm. Ich weiß, wie man das Ergebnis innerhalb des html div direkt einstellt, aber ich muss es innerhalb des Viewbags setzen

Auch die Weise, die ich den Namensparameter zum php Skript überliege. Ist das der richtige Weg, oder gibt es einen besseren Weg, das zu erreichen?

Antwort

0

Ich kann mir keinen Grund vorstellen, den ViewBag hier einzubinden. Sie tun kein Postback zu MVC, also gibt es keine Möglichkeit, es zu füllen. Es handelt sich lediglich um eine Transaktion zwischen dem HTML/Javascript- und dem PHP-Webservice.

Also, es ist eigentlich relativ einfach:

<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> 
+0

Ja ich weiß, wie es auf diese Weise zu tun. Aber das Problem, dem ich gegenüberstehe, ist, das Ergebnis von php service innerhalb der View-Tasche zurückgegeben. Der Grund dafür ist, dass ich innerhalb des Controllers basierend auf diesem Ergebnis einige Operationen ausführen muss. Also meine Frage ist, gibt es eine Möglichkeit, das Ergebnis aus dem PHP-Web-Service in der View-Tasche zu setzen. Auch wenn Sie mich zu einem Link oder Hilfematerial verweisen können, wird das sehr hilfreich sein. –

+0

Im Moment geben Sie die Daten direkt an die clientseitige Webseite zurück und umgehen den Controller vollständig. Ihr Code wird ausgeführt, nachdem der gesamte Controllercode beendet wurde und die Seite für den Benutzer gerendert wurde. Es wird auf dem Computer des Benutzers ausgeführt, nicht auf dem Server. Um zu tun, was Sie wollen, können Sie entweder Ihren Berechnungscode in das Javascript verschieben oder (b) die PHP-Methode von Ihrem C# -Code aus aufrufen - dazu könnte die zweite Antwort hier hilfreich sein: http://stackoverflow.com/questions/5512951/best-practice-for-c-sharp-anruf-php-was-dann-fragt-die-datenbank ab – ADyson

Verwandte Themen