簡體   English   中英

Jquery ajax成功響應是字符串而不是javascript對象

[英]Jquery ajax success response is string not javascript object

我正在對我的Rails應用程序(所有在localhost上運行)進行jQuery AJAX調用,該應用程序正在使用Javascript進行響應。 javascript正在運行,因為我收到了警報。 但是,我想讀取js.erb文件中的my_var變量。 但是,當我嘗試查看success函數的data參數時,它將數據視為字符串。 所以做data.my_var是未定義的。

js.erb文件

var my_var = "hi";
alert('this ran');

JavaScript的

  $.ajax({
      url: "/a/validate?a_id=" + "<%= params[:id] %>",
      context: this,
      dataType: "script",
      data:
      {
        json_a: JSON.stringify(this.a),
        model_to_validate: model,
        target_class: target_class,
        current_class: current_class
      },
      success: function (data, textStatus, jqXHR) {
        if(!this.orderFormViewed) {
          this.orderFormViewed =  data.order_block_opened;
        }
      },
      error: function (data) {
        console.log("error in ajax validate call");
        debugger;
      }
    })

試圖改變自己dataTypejson ,如果你只需要得到一個對象,並確保你的服務器返回一個JSON。

那是因為這正是你告訴它使用dataType: "script" - 看看下面的dataType選項。 腳本在它自己的上下文中運行,所以你不會看到那個變量(我相信)。 如果你想要那套,你將需要以不同的方式進行交流。 或者如果你只是需要數據發送json

https://api.jquery.com/jQuery.ajax/

“script”:將響應評估為JavaScript並將其作為純文本返回。 通過將查詢字符串參數“_ = [TIMESTAMP]”附加到URL來禁用緩存,除非緩存選項設置為true。 注意:這會將POST轉換為GET以獲取遠程域請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM