Javascript Ajax-500内部服务器错误
我正在努力学习AJAX,以便在工作中完成这个项目。我有一个网站可以加载患者正在服用的药物 我递归调用这个AJAX函数,以便它将附加一个新表,其中包含一种药物和7天的历史记录。我在FF和IE中执行代码时遇到问题。在chrome中工作得非常好。我收到了显示xmlhttp.status的警报,我得到的是: xmlhttp.status==500(内部服务器 错误) 我注释掉了我所有的递归,所以它的范围缩小到这个tid代码位。(x记录药物的数量,以便我知道何时停止) 如果需要更多的代码,请告诉我。500(内部服务器错误)表示服务器出现了问题。这可能是几件事,但我首先要验证URL和参数是否正确。另外,确保任何处理请求的人都希望请求是GET而不是POST 了解更多正在发生的事情的一个有用方法是使用这样的工具,它可以让您查看所有HTTP请求和响应,这样您就可以准确地看到您正在发送的内容以及服务器正在响应的内容Javascript Ajax-500内部服务器错误,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我正在努力学习AJAX,以便在工作中完成这个项目。我有一个网站可以加载患者正在服用的药物 我递归调用这个AJAX函数,以便它将附加一个新表,其中包含一种药物和7天的历史记录。我在FF和IE中执行代码时遇到问题。在chrome中工作得非常好。我收到了显示xmlhttp.status的警报,我得到的是: xmlhttp.status==500(内部服务器 错误) 我注释掉了我所有的递归,所以它的范围缩小到这个tid代码位。(x记录药物的数量,以便我知道何时停止) 如果需要更多的代码,请告诉我。500
如果您没有令人信服的理由编写自己的Ajax代码,那么最好使用一个为您处理Ajax交互的库。是一个选项。这可能是SOAP调用的不正确参数;查看“data:”json部分中的参数格式-这是您要传递的负载-参数和数据以json格式包装
Google Chrome的调试工具栏有一些很好的工具来验证参数和查看错误消息——例如,从Console选项卡开始,单击出现错误的URL或单击network选项卡。您将要查看邮件的标题、响应等。取消对以下行的注释:
[System.Web.Script.Services.ScriptService]
服务将开始正常工作
[WebService(Namespace = "http://tempuri.org/")]
要允许从脚本调用此Web服务,请使用ASP.NET AJAX,取消对以下行的注释
遇到了同样的问题,然后我记得出于安全原因,ASP在远程访问您的站点/服务时不会暴露整个错误或堆栈跟踪,就像无法远程测试
.asmx
web服务一样,因此我远程访问服务器并监视我的开发工具,直到那时我才收到臭名昭著的消息“无法加载文件或程序集”Newtonsoft.Json,版本=3.5.0.0,区域性=neutral,PublicKeyToken=30AD4FE6B2A6EED'
或其一个dep…。”
因此,登录服务器并从那里进行调试。我认为您返回的字符串数据很长。因此JSON格式已损坏。 您应该通过以下方式更改JSON数据的最大大小: 打开Web.Config文件并将这些行粘贴到配置部分
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
我修复了这样一个错误,在routes.php中更改了routes的位置,例如,我有这样一个错误:
Route::resource('Mensajes', 'MensajeriaController');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::resource('Mensajes', 'MensajeriaController');
$.ajax({
async: false,
type: "POST",
url: "http://13.82.13.196/api.aspx/PostAjax",
data: '{"url":"test"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
});
public static string PostAjax(AjaxSettings settings)
然后我这样说:
Route::resource('Mensajes', 'MensajeriaController');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::resource('Mensajes', 'MensajeriaController');
$.ajax({
async: false,
type: "POST",
url: "http://13.82.13.196/api.aspx/PostAjax",
data: '{"url":"test"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
});
public static string PostAjax(AjaxSettings settings)
我也遇到了同样的错误。结果表明,原因是后端方法需要不同的json数据。在我的Ajax调用中,我遇到了如下情况:
Route::resource('Mensajes', 'MensajeriaController');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::resource('Mensajes', 'MensajeriaController');
$.ajax({
async: false,
type: "POST",
url: "http://13.82.13.196/api.aspx/PostAjax",
data: '{"url":"test"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
});
public static string PostAjax(AjaxSettings settings)
现在,在我的WebMethod中,在我的C#后端代码中,我声明了我的端点,如下所示:
Route::resource('Mensajes', 'MensajeriaController');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::resource('Mensajes', 'MensajeriaController');
$.ajax({
async: false,
type: "POST",
url: "http://13.82.13.196/api.aspx/PostAjax",
data: '{"url":"test"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
});
public static string PostAjax(AjaxSettings settings)
声明AjaxSettings的位置:
public class AjaxSettings
{
public string url { get; set; }
}
当时的问题是,我的ajax调用和后端端点之间的映射不一样
var data ='{"url":"test"}';
$.ajax({
async: false,
type: "POST",
url: "http://13.82.13.196/api.aspx/PostAjax",
data: '{"settings":'+data+'}',
contentType: "application/json; charset=utf-8",
dataType: "json"
});
我必须更改Ajax调用中的数据变量,以便与方法签名精确匹配。必须在Post
Json Return
中使用行为:JsonRequestBehavior.AllowGet
在C#中,确保任何处理请求的人都希望请求是GET而不是Post
-如何使用那么jQuery.post()方法呢?如果我想写入数据库,我不应该发出Ajax请求吗POST@buffer他的示例显示了xmlhttp.open(“GET”,“传递变量的URL”,true);
,因此关于服务器请求GET的注释是特定于他的代码的。如果您的服务器请求处理需要POST,请使用客户端的POST。我收到了相同的错误,我知道我向服务器发送了大量ajax请求并请求了大量数据。我希望很少有请求会失败。我只想隐藏500个错误弹出窗口我不想让最终用户看到请求失败。我该怎么做?我正在使用jquery ajax方法。控制台选项卡+单击URL的提示是一个很好的提示!这将指出参数中的错误。为本例提供的错误消息非常具体,帮助我快速调试ajax,500内部服务器错误!看你的答案拯救了这一天!非常感谢!非常好的答案!默认值为100KB,请参阅