从 AJAX 错误处理中获取单独的字符串



我有 Respons text,从 Ajax Error.responseText 中捕获。

error: function (data) {
alert(data.responseText);
}

来自 data.responseText 的值 =

"<!DOCTYPE html>n<html lang="en">n<head>n<title>Database Error</title>n<style type="text/css">nn::selection{ background-color: #E13300; color: white; }n::moz-selection{ background-color: #E13300; color: white; }n::webkit-selection{ background-color: #E13300; color: white; }nnbody {ntbackground-color: #fff;ntmargin: 40px;ntfont: 13px/20px normal Helvetica, Arial, sans-serif;ntcolor: #4F5155;n}nna {ntcolor: #003399;ntbackground-color: transparent;ntfont-weight: normal;n}nnh1 {ntcolor: #444;ntbackground-color: transparent;ntborder-bottom: 1px solid #D0D0D0;ntfont-size: 19px;ntfont-weight: normal;ntmargin: 0 0 14px 0;ntpadding: 14px 15px 10px 15px;n}nncode {ntfont-family: Consolas, Monaco, Courier New, Courier, monospace;ntfont-size: 12px;ntbackground-color: #f9f9f9;ntborder: 1px solid #D0D0D0;ntcolor: #002166;ntdisplay: block;ntmargin: 14px 0 14px 0;ntpadding: 12px 10px 12px 10px;n}nn#container {ntmargin: 10px;ntborder: 1px solid #D0D0D0;nt-webkit-box-shadow: 0 0 8px #D0D0D0;n}nnp {ntmargin: 12px 15px 12px 15px;n}n</style>n</head>n<body>nt<div id="container">ntt<h1>A Database Error Occurred</h1>ntt<p>Error Number: 1062</p><p>Duplicate entry '60-2017' for key 'PRIMARY'</p><p>INSERT INTO `table` (`f1`, `f2`, `f3`, `f4`) VALUES ('60', '2017', '60_2017_Permohonan_d2030211.pdf', '2018-06-24 16:43:49')</p><p>Filename: /Applications/XAMPP/xamppfiles/htdocs/fol/models/rek/m_rek.php</p><p>Line Number: 47</p>t</div>n</body>n</html>"

如何从上面的文本中检索文本"错误号:1062"..?

谢谢

作为替代方案,您可以使用 DOMParser。

错误号的文本位于 idcontainerdiv内,并且是第一个<p>,因此您可以使用 querySelector 获取该元素。

你的代码看起来像

error: function (data) {
let parser = new DOMParser();
let doc = parser.parseFromString(data.responseText, "text/html");
alert(doc.querySelector("#container p").innerHTML);
}

let parser = new DOMParser();
var data = "<!DOCTYPE html>n<html lang="en">n<head>n<title>Database Error</title>n<style type="text/css">nn::selection{ background-color: #E13300; color: white; }n::moz-selection{ background-color: #E13300; color: white; }n::webkit-selection{ background-color: #E13300; color: white; }nnbody {ntbackground-color: #fff;ntmargin: 40px;ntfont: 13px/20px normal Helvetica, Arial, sans-serif;ntcolor: #4F5155;n}nna {ntcolor: #003399;ntbackground-color: transparent;ntfont-weight: normal;n}nnh1 {ntcolor: #444;ntbackground-color: transparent;ntborder-bottom: 1px solid #D0D0D0;ntfont-size: 19px;ntfont-weight: normal;ntmargin: 0 0 14px 0;ntpadding: 14px 15px 10px 15px;n}nncode {ntfont-family: Consolas, Monaco, Courier New, Courier, monospace;ntfont-size: 12px;ntbackground-color: #f9f9f9;ntborder: 1px solid #D0D0D0;ntcolor: #002166;ntdisplay: block;ntmargin: 14px 0 14px 0;ntpadding: 12px 10px 12px 10px;n}nn#container {ntmargin: 10px;ntborder: 1px solid #D0D0D0;nt-webkit-box-shadow: 0 0 8px #D0D0D0;n}nnp {ntmargin: 12px 15px 12px 15px;n}n</style>n</head>n<body>nt<div id="container">ntt<h1>A Database Error Occurred</h1>ntt<p>Error Number: 1062</p><p>Duplicate entry '60-2017' for key 'PRIMARY'</p><p>INSERT INTO `table` (`f1`, `f2`, `f3`, `f4`) VALUES ('60', '2017', '60_2017_Permohonan_d2030211.pdf', '2018-06-24 16:43:49')</p><p>Filename: /Applications/XAMPP/xamppfiles/htdocs/fol/models/rek/m_rek.php</p><p>Line Number: 47</p>t</div>n</body>n</html>";
let doc = parser.parseFromString(data, "text/html");
console.log(doc.querySelector("#container p").innerHTML);

应该是这样的:

你可以通过使用javascript函数exec()来获取它

error: function (data) 
{
var errorText = /Error Number:sd*/.exec(data.responseText);
alert(errorText);
}

工作演示 : https://jsfiddle.net/o2be0md6/4/

获取更多 : https://www.w3schools.com/jsref/jsref_regexp_exec.asp

希望这个片段可能对你有所帮助。

var responseData = "<!DOCTYPE html>n<html lang="en">n<head>n<title>Database Error</title>n<style type="text/css">nn::selection{ background-color: #E13300; color: white; }n::moz-selection{ background-color: #E13300; color: white; }n::webkit-selection{ background-color: #E13300; color: white; }nnbody {ntbackground-color: #fff;ntmargin: 40px;ntfont: 13px/20px normal Helvetica, Arial, sans-serif;ntcolor: #4F5155;n}nna {ntcolor: #003399;ntbackground-color: transparent;ntfont-weight: normal;n}nnh1 {ntcolor: #444;ntbackground-color: transparent;ntborder-bottom: 1px solid #D0D0D0;ntfont-size: 19px;ntfont-weight: normal;ntmargin: 0 0 14px 0;ntpadding: 14px 15px 10px 15px;n}nncode {ntfont-family: Consolas, Monaco, Courier New, Courier, monospace;ntfont-size: 12px;ntbackground-color: #f9f9f9;ntborder: 1px solid #D0D0D0;ntcolor: #002166;ntdisplay: block;ntmargin: 14px 0 14px 0;ntpadding: 12px 10px 12px 10px;n}nn#container {ntmargin: 10px;ntborder: 1px solid #D0D0D0;nt-webkit-box-shadow: 0 0 8px #D0D0D0;n}nnp {ntmargin: 12px 15px 12px 15px;n}n</style>n</head>n<body>nt<div id="container">ntt<h1>A Database Error Occurred</h1>ntt<p>Error Number: 1062</p><p>Duplicate entry '60-2017' for key 'PRIMARY'</p><p>INSERT INTO `table` (`f1`, `f2`, `f3`, `f4`) VALUES ('60', '2017', '60_2017_Permohonan_d2030211.pdf', '2018-06-24 16:43:49')</p><p>Filename: /Applications/XAMPP/xamppfiles/htdocs/fol/models/rek/m_rek.php</p><p>Line Number: 47</p>t</div>n</body>n</html>";

console.log($(responseData ).find("#container,p").first().text());

最新更新