【问题标题】:AJAX not returning the whole scriptAJAX 不返回整个脚本
【发布时间】:2013-10-08 10:01:35
【问题描述】:

我正在尝试使用 AJAX 加载以下脚本:

$.ajax({
    type: 'POST',
    async: false,
    url: ROOT + 'Ajax',
    data: {
      call: 'this->loadJs',
      script: 'Activity2/js/buying.js'
    },
    dataType: "script",
    success: function(data) {
      alert('test')
    }
})

但我不断收到parseerror。查看响应后,我可以看到脚本仅部分加载。

我认为这与此处定义的 loadJs 方法 (PHP) 中的 filesize 有关:

public function loadJs($script) // For our new $.getScript stuff.
  {
    $fh = fopen(WROOT . Vs . $script, 'r');
    $contents = fread($fh, filesize(Vs . $script));
    header('Content-Type: application/javascript');
    return $contents;
  }

但是文件大小是正确的,所以我迷路了。

是什么导致 ajax 仅部分加载我的脚本。

顺便说一句,以下工作,但我不想使用它,因为它暴露了我的太多:

$.ajax({
  url: 'http://www.view.com/public_html/views/Activity2/js/buying.js',
  dataType: "script",
  success: function(){
    alert('test')
  }
});

【问题讨论】:

  • 您使用 ajax 调用这样做有什么原因吗? $.getScript() 专门用于加载脚本.... api.jquery.com/jQuery.getScript
  • @Archer 因为它暴露了我太多的路径。
  • content-type : text/javascript ?
  • @mikakun 它仍然在中途切断脚本:(
  • 我看不到使用$.ajax 会暴露什么额外的东西?上传后,您的所有代码都可以免费使用。

标签: php jquery ajax lazy-loading getscript


【解决方案1】:
public function loadJs($script) // For our new $.getScript stuff.
{

header('Content-Type: text/javascript');
echo file_get_contents(WROOT . Vs . $script);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 2019-07-21
    • 2012-10-02
    • 2012-12-16
    • 2011-02-04
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多