2010-08-13 7 views
1

J'utilise un appel ajax pour faire un calcul mineur, puis retourner la valeur et l'afficher dans la page même page où le formulaire est soumis. Dans Firebug, il dit qu'il appelle la fonction, mais n'obtient pas de réponse. (J'ai un formulaire similaire qui écrit dans une base de données qui fonctionne correctement, apparemment parce qu'il n'a pas besoin de réponse - firebug dit qu'il ne parvient pas à obtenir une réponse sur ce script aussi.) La chose étrange est que j'ai écrit ceci sur mon serveur local avant de l'implémenter sur le site et tout a fonctionné comme prévu. J'utilise Code Igniter sur le serveur local et le serveur web, mais je ne sais pas si cela a quelque chose à voir avec ça. De toute façon, toute aide serait géniale. Je suis marginalement nouveau donc c'est un peu mon domaine en ce moment..ajax messages et obtient une réponse sur le serveur local, aucune réponse sur l'hôte Web

Merci

EDIT: .js

$(document).ready(function() { 

    $('#submit').click(function(){ 

    var formdata = { 
     years: $('#years').val(), 
     rate: $('#rate').val(), 
     principle: $('#principle').val(), 
     periods: $('#periods').val(), 
     continuous: $('#continuous').val() 
     } 

    $.ajax({ 
     url: "http://localhost:8888/CodeIgniter_1.7.2/index.php/timevalueshow/submit", 
     type: 'POST', 
     data: formdata, 
     success: function(data){ 
       $('#replace').replaceWith('<p>'+data+'</p>');      
     } 
    }); 

    return false; 
}); 


}); 

php soumettre fonction

function submit(){ 

    $years = $this->input->post('years'); 
    $rate = $this->input->post('rate'); 
    $principle = $this->input->post('principle'); 
    $periods = $this->input->post('periods'); 
    $isCont = $this->input->post('continuous'); 

    $params = array(
     'years' => $years, 
     'rate' => $rate, 
     'principle' => $principle, 
     'periods' => $periods, 
     'isCont' => $isCont 
    ); 

    $this->load->library('timevalue', $params); 

    return $this->timevalue->FVFactor(); 
} 
+0

Pouvons-nous voir du code, essayez-vous aussi de AJAX de local à distant ou vice versa? – Robert

+0

@Robert Il y a le code. J'essaye d'envoyer les données au serveur qui héberge mon site, puis retourne les données. – tshauck

Répondre

0

pourrait-il que la demande est interdomaine fait? Rappelez-vous que mydomain.com est considéré comme un domaine différent de www.mondomaine.com.

J'ai récemment rencontré une situation similaire. J'ai demandé une page de mydomain.com qui a fait une requête AJAX à un script sur www.mydomain.com. La demande n'a pas été faite parce qu'elle était considérée comme inter-domaine. Il a eu les mêmes symptômes que vous décrivez. Dans Firebug et Chrome Developer Console, j'ai vu une réponse vide et aucun message d'erreur.

Le problème est que CodeIgniter génère des URL absolues basées sur le paramètre $config['base_url']. Si vous accédez au site en utilisant un nom de domaine différent de celui configuré dans $config['base_url'], vous pouvez rencontrer ce type de problème.

+0

Comment résoudre ces problèmes? –

0

Cela fonctionne sur le même dev et non sur le serveur parce que vous appelez localhost!

// this will have the client call itself on this particular page (wont work) 
url: "http://localhost:8888/CodeIgniter_1.7.2/index.php/timevalueshow/submit", 

Le code ci-dessus doit être juste:

// this is relative to the document ROOT, will work on server but not on dev! 
// you can set it relative to the calling page using ../ as needed 
url: "/index.php/timevalueshow/submit", 
+0

Salut, j'ai accidentellement copié le fichier local au lieu du fichier sur le serveur. L'appel à la fonction passe, il n'y a pas de réponse. – tshauck

+0

@tshauck ce que je fais toujours en essayant de tuer le beat est d'avoir le serveur ** toujours ** en écho quelque chose donc vous serez sûr que si la fonction est en cours d'exécution ** il sort quelque chose **. Si vous le pouvez, je voudrais aussi avoir un 'error_log ('fonctionne'),' sur php juste pour être sûr. S'il vous plaît faites-le et laissez-nous savoir si même avec la fonction retournant quelque chose, vous n'avez toujours pas de réponse. Thks! – Frankie

+0

Salut, donc j'ai essayé cela et je n'ai pas eu de message d'erreur, mais je n'étais pas sûr que je le configurais correctement, donc j'ai couru un mail() dans la fonction pour m'envoyer un email si ça fonctionnait. – tshauck