Jquery, php, http 500 error on production site - php

I have a jquery issue, I think it's a jquery issue, but I'm calling a php page with a ajax call. Obviously this is easy, but when I go live with it I keep getting a 500 error. I have tried everything I can think of. But I'm not getting anywhere. I'm sure it's because I'm not a jquery guru, so if you are I could use your brain.
keep in mind this works locally but not in production:
$('#submit').on('click', function(e){
e.preventDefault();
if($('#signupForm').valid())
{
var data = $('#signupForm').serializeObject();
$.ajax({
type: "POST",
url: 'http://pathtooweb.com/funcs/signup.php',
data: data,
success: function(data) {
toastr.success(data, "Thank you!");
$("#signupForm").trigger( "reset" );
},
error: function(xhr, ajaxOptions, thrownError) {
console.log(xhr.responseText);
}
});
}
});
Here is the actual issue I am getting on console:
POST http://pathtooweb.com/funcs/signup.php 500 (Internal Server Error) jquery.js:7845
x.support.cors.e.crossDomain.send jquery.js:7845
x.extend.ajax jquery.js:7301
(anonymous function) pathtooweb.com/:84
x.event.dispatch jquery.js:4676
y.handle
UPDATE:
This was not a cross domain issue, it was a server error in a way.. come to find out when I was pushing my code up to github then down to my server one of the libraries I was using was not uploading to github, so in turn wasn't being pulled down to the server. Can't really say why there was no .gitignore file. so anyway, thanks for the "suggestions". :)

Dude I guess you are trying a cross domain POST..!! Which is not allowed via ajax.. and is a strict NO NO as per web standards.!!
Possibly locally you are using a different URL in the ajax request.. which is also hosted locally.. Is it the case??
If you want a cross domain POST.. directly post the form to that URL by having the form action URL as the crossdomain URL.
The second option will be to use jsonP as the datatype in the ajax request.. this is a hack but works.

Related

Ajax request failed because file not found error, but works in address bar directly

In code-igniter 3.0, i am using ajax request for deleting a file from data-table, but in console i am getting error that the URL being passed in Ajax request is not found but amazingly the record gets deleted. I found a solution to use dataType:jsonp that worked but i cannot make changes in my application there are too many ajax requests. Problem occured after shifting my project from XAMPP to hosting server. Can any one help me.
Ajax request is like:
function deleteBlog(id){
$.ajax({
url:'<?php echo base_url()."Static_pages/deleteBlogContent/"?>'+id,
type:'POST',
success: function(data){
my_table.ajax.reload( null, false);
}
})
}
Another issue that i faced is that when i use this url :
url:'<?php echo base_url()."index.php/Static_pages/deleteBlogContent/"?>'+id,
rather than this:
url:'<?php echo base_url()."Static_pages/deleteBlogContent/"?>'+id,
it works.
I also noticed in Network tab that the origin: is different from host and referer.

AJAX POST 500 Internal Server Error on hosting

I'm develop something that need some data to load on AJAX (using POST method).
When I'm build the code on localhost (using XAMPP on Windows 7). It works pretty well.
But, when I'm moved the code to hosting server, It give me a 500 Internal Server Error..
Here's the code that send the AJAX Request
$.post("the-link-to-ajax-handler",
{
//some parameter
roomid : roomid,
amenities : amenities,
},
function(data){
//process that I do when ajax complete
}
And here's the AJAX Handler (using PHP)
$roomid = mysqli_escape_string($conn, $_POST['roomid']);
$amenities = mysqli_escape_string($conn, $_POST['amenities']);
echo $roomid."<br/>".$amenities;die();
*I'm trying to print the parameter but no luck, I'm still get the 500 Error
Screenshot of Network Panel from process on hosting
And here's the Screenshot Network Panel from process on localhost (definitely with the same code)
1) Are you missing any javascript plugin files or the plugin files path is not defined you faced the 500 internal server error.
2) Hosting server is Case Sensitive check the Variable values.
3) If you move to ajax before alerting the flow.
Read your error logs to find out problem or try adding error_reporting(E_ALL) to your code then run again.
Try this :
$.ajax({
url: "the-link-to-ajax-handle", // Url to which the request is send
type: "POST", // Type of request to be send, called as method
data: {roomid:roomid,amenities:amenities}, // Data sent to server, a set of key/value pairs representing form fields and values
dataType: 'json'
}).done(function (data) {
console.log(data);
}).fail(function (data) {
console.log('failed');
});
I had same issue, i noticed that my php files permission was set to 0755. i changed it to 0644 and it worked well.

$.ajax not a function in yii

I have the below function that I used in two different pages and worked perfectly in both cases. Suddenly my pages stopped updating and I got the error $.ajax not a function.
function update_report(data) {
var request = $.ajax({
url: "report?poids="+data,
type: "GET",
dataType: "html"
});
request.done(function(msg) {
$("#yw2").html(msg);
});
request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
req ="a";
}
I then changed the $ to jQuery. Then it started sending AJAX requests but it didnt get the relative URL. Like I was generating the request from a page like /index.php/link1 and my code was sending request to /index.php/report rather then /index.php/link1/report
So, then I changed my url: to "link1/report=?"+data then it started sending request to the right page but couldnt update the response as it didnt find the div #id. Got error
TypeError: $(...) is null
What can cause all this issue and how to fix this? And why $.ajax suddenly stopped working, though I didnt make any changes?
JQuery can be not available by $.ajax(). Check if jQuery.ajax() is available or you included jquery twice.
You should not require jquery manually. The best way to include jquery is using Yii::app()->clientScript->registerCoreScript('jquery'). Path for library is set in config/main.php.

Ajax call giving error 500

I have two folders with a php on my domain. From one file I want to send data to the other via using ajax call. The call worked for me on localhost, but when I had my website on live server it gives 500 error on the same ajax call ?
How can I solve this issue ?
My ajax call is as following:
var data_to_send = {};
j.ajax({
url : '../orangehrm/symfony/web/index.php/auth/login',
type: "POST",
data : data_to_send,
async: false,
success: function(data, textStatus, jqXHR)
{
time_zone = j(data).find('#hdnUserTimeZoneOffset').val();
},
error: function (jqXHR, textStatus, errorThrown)
{
}
});
A 500 number error is a server-side exception - something went wrong in Apache or IIS or whatever. To determine what that was, you can check the error logs on the server (Event Viewer on Windows), or turn on "detailed error messages" in your web service software for remote requests to see more information returned to the browser - browsing locally on the server can have the same effect.
Your ajax call is ok (as a call, cannot account for what you post there).
Error 500 = something went wrong on the server side. It could go from a mistyped function name in a script or something similar to a bad config that kills the script. Activate logging on the server, or activate displaying errors on the server (you can find this easy with a simple google type).
Complete list of codes here: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes (you can see that 500 is a generic error).
Now... some wild guesses: Since you said on your local server went fine, but broke on live, there are some usual suspects... one of them would be file permissions. On your local server you are a god, while on live you are well... less god. If your that php script uploaded files, or write something on disc, check that the user that runs the apache have rights to access/read/write that specific things.
Another usual suspect is the database connection (in case you have any). The credentials on live may be different.
And another one... php version/php extensions/php configs (like short tags for example).
Again... it may be anything... but usually I've seen that people make mistakes covered by those 3.
The 500 http code means your server returns an Internal Error on the accessed url.
Try to access that url without Ajax, then try to alert the url(see code bellow), copy the alerted string and paste it in your browser to see if you are pointing on the wished resource or not. This because your url seem to be poor and pointing to another thing than the wished.
DEBUG CODE:
var data_to_send = {},
_url='../orangehrm/symfony/web/index.php/auth/login';
//console.log(_url);
alert(_url);//copy this alerted _url and paste in the browser
j.ajax({
url : _url,
type: "POST",
data : data_to_send,
async: false,
success: function(data, textStatus, jqXHR)
{
time_zone = j(data).find('#hdnUserTimeZoneOffset').val();
},
error: function (jqXHR, textStatus, errorThrown)
{
}
});

Ajax limiting amount of items returned

I'm making a AJAX request like this:
$("#botao_pesquisar_material").click(function(){
$(this).attr("disabled", "disabled");
$("#material").addClass('loading');
$.ajax({
url: '{{ URL::base() }}/material/lista_ajax/',
dataType: 'json',
cache: false,
error: function(data)
{
console.log(data);
},
success: function(data) {
for(x in data)
{
console.log(data[x]);
}
}
});
My PHP method is ok because when I access it via URL, it returns me the expected JSON and when I call this on localhost, it works perfectly so it isn't about special characters or something else with the data.
When I run this on my server I have this:
GET http://dc.portaldeideias.com.br:8080/sergios/public/material/lista_ajax/?callback=jQuery172007718208665028214_1342725644520&_=1342725649090 500 (Internal Server Error) jquery.js:4
f.support.ajax.f.ajaxTransport.send jquery.js:4
f.extend.ajax jquery.js:4
$.click.$.ajax.url
f.event.dispatch jquery.js:3
f.event.add.h.handle.i
Using console.log(data) I have the entire JSON response but here is what is really strange:
The readyState is 4
The responseText is [{"attributes":{"pk_a030_id":78,"a030_descricao":"Camur\u00e7a"},"original":{"pk_a030_id":78,"a030_descricao":"Camur\u00e7a"},"relationships":[],"exists":true,"includes":[]}]
The statusText is Internal Server Error
So, the requested value is created but I receive a Internal Server Error
Sorry for posting this as an answer, but I don't have the required privileges to add this as a comment for your question.
Have you noticed that the URL in the javascript log http://localhost:8080/sergios/public/material/lista_ajax/ is different than the one provided in your screenshot http://dc.p[...]s.com.br:8080/sergios/public/material/lista_ajax?
Could it be the case that you have two different versions of the lista_ajax PHP method hosted in two different servers (maybe one remote and the other one local), and that's why it works flawless when seeing it from the browser and has bugs when tested with ajax?
It's also important to notice that if you are browsing a website hosted on a remote server, and the ajax is configured to a localhost address, it will do a request for your own machine, not the remote server (javascript runs in the browser, so localhost translates to its own client address).
Maybe this is not the case, but it was worth commenting.

Categories