наиболее распространенный вариант csv там, который является Excel совместимый, позволит встроенные новые строки, пока поле окружается двойными кавычками.
foo,bar,"blah blah
more blah blah",baz
или
foo,bar,"blah blah
more blah blah"
или
"blah blah
more blah blah",baz
все допустимы. Этот механизм также допускает встроенные запятые.
Используя кавычки вокруг текстовых полей без встроенных новых строк (или запятые) прекрасен также. Если сам текст содержит двойную кавычку затем, механизм для выхода из него должен соединить два, например.
foo,bar,"this person said ""blah blah
more blah blah""",baz
Запись csv читателя, который обрабатывает, это правильно может быть хитро (особенно при доверии регулярным выражениям).
Чтобы различать ошибки HTTP ( 404
, 401
, 403
, 500
и т. Д.) .) и ошибки запроса прерывания (т.е. пользователь нажал Esc или перешел на другую страницу), вы можете проверить свойство XHR.status, если запрос был прерван, член статуса будет нулевым:
document.getElementById('element').onclick = function () {
postRequest ('test/', null, function (response) { // success callback
alert('Response: ' + response);
}, function (xhr, status) { // error callback
switch(status) {
case 404:
alert('File not found');
break;
case 500:
alert('Server error');
break;
case 0:
alert('Request aborted');
break;
default:
alert('Unknown error ' + status);
}
});
};
Простая функция postRequest:
function postRequest (url, params, success, error) {
var xhr = XMLHttpRequest ? new XMLHttpRequest() :
new ActiveXObject("Microsoft.XMLHTTP");
xhr.open("POST", url, true);
xhr.onreadystatechange = function(){
if ( xhr.readyState == 4 ) {
if ( xhr.status == 200 ) {
success(xhr.responseText);
} else {
error(xhr, xhr.status);
}
}
};
xhr.onerror = function () {
error(xhr, xhr.status);
};
xhr.send(params);
}
Запустите приведенный выше фрагмент здесь .