Hallo zusammen,
ich würde gerne in meiner Webanwendung mit Ajax-Request arbeiten.
Der Aufbau der Anwendung ist der aus Bild1 und denke ich allgemein bekannt.
Füge ich den Code für den Ajax-Request direkt in der View ein als Script-Teil funktioniert das ganze auch.
Die Methode, welche sich in der extra js-Datei befindet wird über einen Change-Event von diesem Select-Feld aufgerufen.
<div class="formRow">
<p>
<label>
Land*:<br />
<select name="country" id="country" data-url="@Url.Action("FirstAjax","Ajax")">
<option value="-1" selected>Bitte wählen</option>
<option value="Deutschland">Deutschland</option>
</select>
</label>
</p>
</div>
Aktuell zum Testen irgendwelche Testdaten fest verankert.
var frmData = new FormData();
frmData.append('modul', 'googleMaps');
frmData.append('street', $('#street').val());
frmData.append('houseNumber', $('#houseNumber').val());
frmData.append('zipCode', $('#zipCode').val());
frmData.append('city', $('#city').val());
var url = $(this).attr('data-url');
$.ajax(
{
url: url,
type: 'POST',
cache: false,
data: {
Address1: "423 Judy Road",
Address2: "1001",
City: "New York",
State: "NY",
ZipCode: "10301",
Country: "USA"
},
contentType: 'application/json; charset=utf-8',
success: function (data) {
var dataArray = $.parseJSON(data);
console.log(dataArray);
},
error: function () {
alert("Error");
}
}
);
und das ist jetzt der Controller dazu
namespace landscape.Controllers
{
public class AjaxController : Controller
{
// GET: Ajax
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult FirstAjax(Company company)
{
return Json(new { success = true });
}
}
}
Bild2 zeigt die Fehlermeldung, dass die Datei/Controller nicht gefunden wird.
Die "externen" JS-Dateien werden per Bundle eingespielt.
@Scripts.Render("~/Scripts/ownJs")
Müsste doch eigentlich genauso funktionieren, als wie wenn ich den Javascript Inline definiere.
Der Browser setzt einen GET Request auf der Url ab, aber dafür gibt es keine passende Methode in deinem Controller.
Mh okay. Aber es reicht nicht aus der vorhanden Methode [HttpGet] daraus zu machen.