Używamy aplikacji ASP napisanej przez zewnętrznego sprzedawcę. Mam za zadanie wprowadzić niewielką zmianę w aplikacji, ale nie wiem nic o aspie lub jsonie. Poprzez niektóre badania poskładałem to razem. W formularzu utworzyłem pole tekstowe i chcę przywrócić adres IP klienta do tego pola tekstowego. Napisałem funkcję, a następnie kontroler. Kod dla obu jest poniżej:Błąd powrotu JSON z ASP
Funkcja
function processgetip(event) {
// Within this function, make an AJAX call to get the IP Address
$.getJSON('@Url.Action("GetIPAddress","getipaddress")', function (ip) {
// When this call is done, your IP should be stored in 'ip', so
// You can use it how you would like
// Example: Setting a TextBox with ID "YourElement" to your returned IP Address
$("#facility").val(ip);
});
}
Kontroler
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web;
using System.Web.Mvc;
namespace Parker_Hannifin.Controllers
{
public class getipaddressController : ApiController
{
public JsonResult GetIPAddress()
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
//return addresses[0]; //
ipAddress = addresses[0];
}
}
//replace ipaddress with ipAddress
return Json(ipAddress, JsonRequestBehavior.AllowGet);
}
}
}
Dostaję te błędy na tej linii kodu:
return Json(ipAddress, JsonRequestBehavior.AllowGet);
The pojawia się błąd:
Najlepszym przeciążona metoda mecz dla System.Web.Http.ApiController.Json (ciąg, Newtonsoft.Json.JsonSerializerSettings) ma pewne nieprawidłowe argumenty. nie można przekonwertować z System.Web.Mvc.JsonRequestBehavior do Newtonsoft.Json.JsonSerializerSettings
Jeśli ktoś może mi powiedzieć, co one oznaczają i jak je naprawić Będę bardzo wdzięczny.
Drugi parametr do 'Json (...)' jest niepoprawny. Musisz zwrócić instancję [JsonResult] (https://msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult (v = vs.118) .aspx), jeśli chcesz użyć ' JsonRequestBehavior.AllowGet'. –
spróbuj zmienić publiczne jsonresult na publiczne działanie? –
coś jest nie tak z twoim ciągiem ipAddress spróbuj umieścić prosty ciąg i sprawdź, czy twój json działa. Myślę, że twój ciąg zawiera coś w rodzaju ukośnika lub kropki, co może spowodować problem. – DarkVision