Requête Ajax réussit, mais le résultat est vide
Je suis la construction d'une extension du navigateur Google Chrome qui utilise $.ajax
demande pour envoyer des données à partir de pages web de mon serveur (actuellement hébergé à l'aide de localhost). Le content_script.js
fichier est en cours d'exécution dans le cadre de pages web (plus sur le contenu des scripts) que l'extension a accès aux pistes de ce code:
//note: encode64String is assigned earlier in the script...
$.ajax({
type: "POST",
url: "http://localhost:8888/quartzsite/uploadendpoint.php",
type: "jsonp",
data: {img: encode64String},
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
success: function(data){
console.log("The ajax request succeeded!");
console.log("The result is: ");
console.log(data);
},
error: function(){
console.log("The request failed");
}
});
Le problème est que le Ajax
demande est réussie, mais le data
argument qu'il renvoie est vide...
La console ressemble à ça après l'exécution du code:
Actuellement le contenu de la uploadedendpoint.php
fichier sont les suivantes:
<?php
header("Access-Control-Allow-Origin: *");
echo 'This comes from php file'; die();
?>
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
The content of the document......
</body>
</html>
Cela signifie qu'il devrait être au moins quelque chose d'être renvoyé dans le data
variable.
J'ai en outre confirmé que la demande est de réussir parce que quand j'envoie la demande d'une fracture de l'url (c'est à dire uploaddddddendpoint.php) le code à l'intérieur de la $.ajax
's error
paramètre est exécutée.
J'ai lu sur des questions similaires comme jQuery $.ajax en réponse vide, mais seulement en Chrome mais en vain...
Mise à JOUR:
J'ai supprimé les invalides deuxième type: "jsonp"
paramètre entièrement et ont ajouté dataType: "text/html"
. Je suis maintenant un échec ajax
demande chaque fois que le code est exécuté.
Mise à JOUR: Étrangement changer dataType : "text/html"
à dataType : "html"
causes de la ajax
demande pour réussir mais encore une fois avec un vide data
variable.
Mise à JOUR: Lors de l'utilisation de la dev kit d'outils pour surveiller le Réseau XHR ce sont les envoyés et les messages de réponse:
En ce qui concerne le drapeau de la possible duplication de
Impossible de traverser le site ajax appels de l'api dans une extension chrome? Je penser le contraire! J'ai étudié la question et le problème ne semble PAS être le même.
<?php echo 'This comes from php file'; die(); ?>
- Vérifier si vous obtenez ce dans la console.ce qui ne l'onglet Réseau? essayez de supprimer
jsonp
type.pas de changement...
accédez au volet réseau de google chrome dev tools et voir ce que le script retourne
Re edit: La capture d'écran de la devtools suggère que votre problème n'est pas lié à JS/jQuery, mais causé par quelque chose à votre serveur. Dans ton bout de code PHP, vous avez défini un en-tête de réponse. Cependant, cet en-tête est absent dans votre capture d'écran. Aussi,
Content-Length: 0
indique que la réponse du serveur est vraiment vide.OriginalL'auteur Brannon | 2013-08-14
Vous devez vous connecter pour publier un commentaire.
Pourquoi avez-vous deux
type
champs dans ta requête AJAX?jsonp
etPOST
.Mise à JOUR:
Je pense que vous devriez être en utilisant le chemin relatif pour l'URL. Essayez de modifier votre demande à:
Vous pouvez le voir, j'ai remplacé l'URL avec
/quartzsite/uploadendpoint.php
. Cela peut résoudre le problème... l'URL absolue pourrait être le signal d'un cross-demande de domaine qui n'est pas ce que vous êtes après.Aussi, comme une note de côté, il n'est pas nécessaire de définir le contentType, depuis que vous êtes le paramètre est déjà la valeur par défaut. Si vous avez été l'envoi d'un JSON ou XML, alors vous voulez définir le contentType.
dataType
. La demande est maintenant échouent (ce qui pourrait indiquer qu'il a été précédemment en donnant un faux positif).Vous ne devriez pas être à l'aide de "jsonp" n'importe où dans votre demande. C'est une méthode avancée pour les demandes inter-domaine et je doute que c'est ce dont vous avez besoin. Avez-vous encore ce qu'il y à?
J'ai enlevé
jsonp
J'ai mis à jour la question.
OriginalL'auteur ktm5124
Une manière de résoudre le problème:
Dans google chrome a été une réponse vide.
Dans FF montrer php avertissements dans la réponse
Avertissement: .... sur la ligne ...
Après la suppression de l'avertissements, chrome a commencé à afficher une réponse.
OriginalL'auteur Федор Пересадов