Page 1 of 1

Phantomjs gefroren am leeren Terminal, nachdem er versucht hat, $ .Ajax zu verwenden

Posted: 23 Apr 2025, 06:22
by Anonymous
Ich habe meinen Code auf Phantomjs portiert und habe es schwer, $ .AJAX in JQuery zu verwenden. Ich denke, es ist etwas damit, wie meine Funktionen definiert sind, aber ich bin neu in JavaScript. Hier ist mein verkürzter Code: < /p>
var page = require('webpage').create();
console.log('required webpage');

page.onConsoleMessage = function(msg) {
console.log(msg);
};
console.log('added message event handler')

page.open('', function() {
console.log('page.opened \nnow in page context');
page.render('opened.png');
page.includeJs("https://ajax.googleapis.com/ajax/libs/j ... ery.min.js", function() {
page.evaluate(function() {
console.log('evaluating');

function getMessages() {
return new Promise((resolve, reject) => {
$.ajax({
url: 'https://www.example.com/myrequest.php',
type: 'POST',
data: {
mychar_id: 32,
offset: 0,
limit: 10
},
success: function(data) {
if (data.trim() === '') {
console.log("received null");
reject("Received null data");
} else {
resolve(data);
}
},
error: function(xhr, status, error) {
console.log('AJAX Error:', error);
reject(error);
}
});
});
}

getMessages().then(data => {
console.log(data);
}).catch(error => {console.error(error);});

console.log("extending jquery.");
// JQuery stuff goes here.
console.log('Final markup.')
console.log(document.body.innerHTML);
});
page.render('done.png')
console.log('exiting');
phantom.exit();
});
});

< /code>
Wenn ich dies jedoch mit Phantomjs ausführt, sehe ich nur einen leeren Cursor und der einzige Weg zum Beenden ist mit ^c. Ich habe alles ausprobiert, was ich mir vorstellen kann, um Funktionen zu bewegen usw., aber bisher kein Glück. Ich weiß, dass meine Funktion woanders funktioniert. Was kann ich tun?