Jquery PHP класы ішінде

PHP арқылы біздің желімізде API-ге кейбір XML-ді жіберу керек. Әдетте мен Curl-ды қолданамын, ол жақсы жұмыс істейді, бірақ менің сценарийлерім серверден жұмыс істемейді, бұлар бұғатталмайды және оны орнатуға болмайтын барлық мәліметтерге кірмей, сервердегі басқа маңызды өндіріс қосымшасын бұзады.

Кейбір ойлардан кейін, XML-ді jQuery арқылы API-ге жіберу үміттім. PHP классынан jquery-ге қол жеткізуге болатын болса, кез-келген біреуді шешкен бе? Мен білемін, бұл ақылға сыймайды және біреу маған не істеу керек екенін айтады, бірақ маған бұл ақылға қонымды шешім ретінде айтылады.

Одан басқа, мен сыныпқа баруым керек және XML-ге жіберу үшін сыныпты пайдаланатын контроллер мен бетке қайтадан тырысып көріңіз.

P.S біз жұмыс істейтін мәселені шешуге арналған пәрмен жолының бұралуын көрдік, бірақ кейбір тапсырыстар бойынша URL ұзындығымен мәселе аламыз, себебі xml өте үлкен және тым ұзақ болуы мүмкін.

Кез келген ойлар?

0
webmasterworld.com/php/3220360.htm мына әрекетті орындап көріңіз ...
қосылды автор Val, көзі
рахмет, енді оны көріңіз ^^
қосылды автор azzy81, көзі
Әдемі шешім емес, сонымен қатар, біз айнала алу үшін xml-ті жасайтын серверде жаңа db-кестені жасадық және негізінен xml-дағы кестеде жол жасаймыз. біз командалық жолдың бұралуын қолданамыз (php curl емес), біз енгізген жолдың id-ге api-ді жібереміз. api деректер базасынан xml-ні жүктейді, жауап береді және жауап қайтарады.
қосылды автор azzy81, көзі
ол тұрақты шешімдердің сәтсіздікке ұшырау нүктелеріне ие, бірақ дүйсенбі күнделікті жұмыс істеуге қажет. ^ D уақытына көмектесетін барлық адамдарға алғыс айтамыз
қосылды автор azzy81, көзі

2 жауаптар

Оның орнына сокеттер пайдаланыңыз.

@Val сілтемесінен көшірілген:

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp)
{
echo 'Could not open connection.';
}
else
{
$xmlpacket ='<?XML version="1.0"?>

';

$contentlength = strlen($xmlpacket);

$out = "POST /script_name.php HTTP/1.0\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Keep-Alive\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-length: $contentlength\r\n\r\n";
$out .= "XML=$xmlpacket";

fwrite($fp, $out);
while (!feof($fp))
{
$theOutput .= fgets($fp, 128);
}
fclose($fp);

// $theOutput is the response returned from the remote script
}
?>
1
қосылды
Nicked my points :( Жаман жауап үшін жасалған: p
қосылды автор Val, көзі
Сізге жауап бергеніңізге байланысты. Мен бұл әдісті қолдануға тырыстым, алайда егер бізде fsockopen қателігі болса. URL-мекен-жайын тамаша шолғышқа кіре алатын болсақ та, сұраудың URL-мекенжайын ашу мүмкін емес. Екінші жағынан, жақсы жаңалық - мен жоғарыда түсіндіретін шешімді таптым, бірақ қазір жұмыс істейді.
қосылды автор azzy81, көзі
бірақ біз бұл шешімді пайдаланбаған болсам да, бұл мәселені шешу үшін ең жақсы шешім деп санаймын. Мәселен менің бұл жауап ретінде қабылдайды.
қосылды автор azzy81, көзі

Сіз алмайсыз. jQuery клиенттегі серверде емес браузерде іске қосылады. Сіз Javascript-ті клиентке жібере аласыз және өзіңіздің жерде жұмыс істей аласыз. Бірақ file_put_contents көмегімен сіз деректерді басқа тарапқа жібере аласыз , егер ол GET-ге қабылдайтын болса.

1
қосылды