I'm writing code for an imageboard and my users are going to be able to post textfiles which will loa开发者_C百科d as pages in a css layer. I have a simple php script which takes a filename and some parameters(for start of line and lines per page) through GET, opens the file passed, and displays a section of that file as html:
http://pastebay.com/115710
I can confirm that this script works by calling it in a browser and setting the get string in the url.
I'm calling this script by AJAX using jQuery, binding a function to any links to textfiles in the page so that, when those links are clicked on, a layer opens up and (what I want to happen is) the html returned by the php file is dumped into that layer:
http://pastebay.com/115711
When I use the same AJAX call using the textfile itself the call is successful and I can load the contents of the textfile into the layer.
When I call the php file by AJAX, I get the following response when the php file never opens the textfile passed:
Blockquote Warning: file(http://localhost/kusabax/lit/src/nrd.txt) [function.file]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\xampp\xampplite\htdocs\kusabax\textview.php on line 6 Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\xampplite\htdocs\kusabax\textview.php on line 6
whatever the problem is, it's with trying to open the textfile itself - if I use fopen() or file() the result is the same, and without that line the script runs properly (except without, obviously, any useful results.)
I should also mention that I tried writing an iframe into the #prevwin layer and having the php script load into the iframe, and just writing the get attributes into the src string (not even using AJAX at all) - but I still got the same timeout.
I think I solved it.
Having the filename sent to the php script as an absolute url was the problem. I edited the javascript to change the url string to a relative url by splitting the href string and taking the current folder and filename and building a new url:
s = this.href;
a = s.split("/");
board = a[4];
src = a[a.length-1];
relhref="./"+board+"/src/"+src;
and then passing relhref to the AJAX function.
精彩评论