jQuery的加载功能在本地不起作用

时间:2015-11-12 09:15:44

标签: javascript jquery

当窗口宽度小于600px时,我必须在现有div中加载HTML文件。

代码是:

import UIKit
import CoreData

class ExampleViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate {

    @IBOutlet weak var tableView: UITableView!

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
    var fetchedResultController: NSFetchedResultsController = NSFetchedResultsController()

    var orders = [Order]()
    var startDate : NSDate = NSDate()
    var endDate : NSDate = NSDate()

    override func viewDidLoad() {
        super.viewDidLoad()
        fetchedResultController.delegate = self
        tableView.dataSource = self
        tableView.delegate = self

        fetchData()
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return fetchedResultController.fetchedObjects!.count
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        let order = fetchedResultController.fetchedObjects![section] as! Order
        return ((order.products?.count ?? 0) + (order.services?.count ?? 0))
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let textCellIdentifier = "ExampleTableViewCell"
        let row = indexPath.row

        let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as! ExampleTableViewCell

        let order = fetchedResultController.fetchedObjects![indexPath.section] as! Order // Data fetched using NSFetchedResultsController
        let products = (order.products?.allObjects ?? [Product]()) as! [Product] // Swift Array
        let services = (order.services?.allObjects ?? [Service]()) as! [Service] // Swift Array

        if (row < products.count) { // this is a Product row
            cell.orderLabel.text = products[row].name!
        } else { // this is a Service row
            cell.orderLabel.text = services[row-products.count].name!
        }
        return cell
    }

    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        let order = fetchedResultController.fetchedObjects![section] as! Order
        return "\(order.date)"
    }


    func orderFetchRequest() -> NSFetchRequest {
        let fetchRequest = NSFetchRequest(entityName: "Order")
        let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
        let predicate = NSPredicate(format: "date >= %@ AND date <= %@", startDate, endDate) // startDate and endData are defined elsewhere

        fetchRequest.sortDescriptors = [sortDescriptor]
        fetchRequest.predicate = predicate

        return fetchRequest
    }

    func fetchData() {
        let fetchRequest = orderFetchRequest()
        fetchedResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath:nil, cacheName: nil)

        do {
            try fetchedResultController.performFetch()
        }
        catch let error as NSError {
            print("Could not fetch \(error), \(error.userInfo)")
        }
    }
}

我已经在我的网站上测试了这段代码并且它有效,但也许我做错了让它在本地工作。

<head> <script> $(document).ready(function(){ if($(window).width() < 600) { $("#testing_div").load("C:/Users/elena/Desktop/Demo/prova.html"); } }); </script> </head> <body> <div id="testing_div"> </div> </body> 函数在本地工作但仅在网络服务器上有效的原因吗?

2 个答案:

答案 0 :(得分:4)

原因是安全。通过file://协议运行网页已禁用许多功能,因为存在安全问题。您可以通过Node.js在javascript中创建一个Web服务器,并且可以在本地创建一个Web服务器,而无需安装apache或类似的东西。

Node.js网页:

https://nodejs.org/en/

答案 1 :(得分:-1)

我有两种方法可以快速解决。

1 - 您可以下载&#34; Allow-Control-Allow-Origin&#34;谷歌浏览器上的扩展程序。

2 - 您可以安装wamp程序,wamp将模拟本地Web服务器。在这种情况下,您将使用以下方式访问您的页面:&#34; localhost / name_of_the_page.html&#34;