【问题标题】:rails 3 jquery ajax call fails with statusText: "parsererror"rails 3 jquery ajax 调用失败,statusText:“parsererror”
【发布时间】:2011-07-14 17:59:25
【问题描述】:

这可能是一个愚蠢的问题。对不起,如果是这样的话。

在带有最新 jquery-rails gem "1.0.12" 的 rails 3 应用程序上,我正在尝试从 ajax 调用中替换 html

$.ajax({
    type: "POST",
    cache: false,
    url: url,
    data: data,
    error: function(jqXHR, textStatus, errorThrown){
        console.log(jqXHR);
        console.log(textStatus);
        console.log(errorThrown);
    },
    success: function(msg){
        alert('Load was performed.');
    }
    });

在控制器中,我使用 js.erb 文件中的 htm 代码应答 ajax 调用 js.erb 文件的内容是

<img src="<%=@test%>" id="<%=@test_id%>">

收到响应但触发了 parseerror 错误。 响应头中的内容类型是

Content-Type:text/javascript; charset=utf-8

错误回调中的 jqXHR 响应包含这个

Object
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
isRejected: function () {
isResolved: function () {
overrideMimeType: function ( type ) {
pipe: function ( fnDone, fnFail ) {
promise: function ( obj ) {
readyState: 4
responseText: "<img src="/images/author_tests/copywriter_photo_2.jpg" id="copywriter-test-4e1c3eb5e09c1657fb000003">"
setRequestHeader: function ( name, value ) {
status: 200
statusCode: function ( map ) {
statusText: "parsererror"
success: function () {
then: function ( doneCallbacks, failCallbacks ) {
__proto__: Object

我尝试将 dataType 设置为 text 但这样做服务器会引发错误

ActionView::MissingTemplate (Missing template [.....] with {:locale=>[:"en-US", :"en-US"], :handlers=>[:rhtml, :rxml, :builder, :haml, :erb, :rjs], :formats=>[:text, "*/*"]}

我做错了什么?

【问题讨论】:

标签: ajax ruby-on-rails-3 jquery parse-error


【解决方案1】:

您返回的实际上是 HTML,而不是 JS。 js.erb 文件的内容被传递给 javascript 引擎进行评估,因此它会阻塞您的 HTML(因为这不是有效的 javascript)。

由于您只想返回 HTML,并且想要替换页面上的元素,请尝试 jQuery .load() 方法,并为您的 URL 提供 .html 扩展名。然后将 .js.erb 文件的内容移动到响应控制器的 html 格式的任何内容中。

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多