ช่วยดูให้ทีครับ ดึงข้อมูลจาก web service แล้วมาแปลงเป็น xml
คือผมมี web service คอย return string ให้ web server อีกที (อยาก return เป็น xml เลย แต่ไม่รู้ทำยังไง)
ตอนเรียก ผมจะใช้ ajax เรียกไฟล์ genxml.php แล้วไฟล์นี้จะไปเรียกใช้ web service
ผมลองรันไฟล์ genxml.php ดูตรงๆ ก็แสดงเป็นไฟล์ xml ออกมาปรกตินะครับ
ก่อนหน้านี้ไฟล์ genxml.php ผมประกาศแบบตรงๆ เลย ก็ใช้งานได้ปรกติ ประมาณโค้ดด้านล่างนี้ครับ
Example.php
header("Content-type:text/xml; charset=UTF-8");
echo '<?xml version="1.0" encoding="UTF-8"?><test>1234</test>';
โค้ดที่เขียนไว้ครับ
Service.php
require_once("lib/nusoap.php");
require_once("configDB.php");
require_once("user.php");
//Create a new soap server
$server = new soap_server();
//Configure WSDL
$server->configureWSDL("Service Users", "urn:server");
//Define namespace
$server->wsdl->schemaTargetNamespace = 'urn:server';
$paramXML = array(
"userId" => "xsd:string"
);
$server->wsdl->addComplexType('ListXML',
'complexType',
'struct',
'all',
'',
array(
'xml' => array('name' => 'xml', 'type' => 'xsd:string')
)
);
$server->register('genXML',
$paramXML,
array('return' => 'xsd:string'),
'urn:Server',
'urn:Server#genXML',
'rpc',
'encoded',
'Gen XML List'
);
//// function
function genXML($userId){
require_once('useragent.php');
$ua = userAgent($_SERVER['HTTP_USER_AGENT']);
if ($ua == 'tablet' || $ua == 'mobile') {
} else { // PC Desktop
$userClass = new Users(array('uid'=>$userId));
return $userClass->getXmlDetail();
}
}
// Get our posted data if the service is being consumed
// otherwise leave this data blank.
$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
// pass our posted data (or nothing) to the soap service
$server->service($POST_DATA);
exit();
user.php
<?php
class Users{
public static $uid = "";
function __construct($param = array()){
/*
* Parameter array associative:
uid -> user id
*/
self::$uid = $param['uid'];
}
function getXmlDetail(){
$user[0] = sprintf("SELECT user_id FROM cctv_users WHERE user_id = '%s'", self::$uid);
$user[1] = mysql_query($user[0]) or die(mysql_error());
$user[2] = mysql_fetch_assoc($user[1]);
$link[0] = sprintf("SELECT xml_id FROM cctv_links WHERE user_id = '%s'", $user[2]["user_id"]);
$link[1] = mysql_query($link[0]) or die(mysql_error());
$link[2] = mysql_fetch_assoc($link[1]);
$xml[0] = sprintf("SELECT channel_id, title, link, metrix FROM cctv_channel WHERE xml_id = '%s'", $link[2]["xml_id"]);
$xml[1] = mysql_query($xml[0]) or die(mysql_error());
$xmlData = '<?xml version="1.0" encoding="UTF-8"?><category><group>';
while($xml[2] = mysql_fetch_assoc($xml[1])){
$display[0] = sprintf("SELECT title, link FROM cctv_display WHERE channel_id = '%s'", $xml[2]["channel_id"]);
$display[1] = mysql_query($display[0]) or die(mysql_error());
$xmlData .= sprintf('<channel><title>%s</title><link>%s</link><metrix>%s</metrix>', $xml[2]['title'], $xml[2]['link'], $xml[2]['metrix']);
while($display[2] = mysql_fetch_assoc($display[1])){
$xmlData .= sprintf('<display><title>%s</title><link>%s</link></display>', $display[2]['title'], $display[2]['link']);
}
$xmlData .= '</channel>';
}
$xmlData .= '</group></category>';
return $xmlData;
}
function __destruct(){
mysql_close();
}
}
?>
--------------------------------------------------------------------------------------------------------------------------
genxml.php
session_start();
header("Content-type:text/xml; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
if(isset($_SESSION['userid'])){
require_once("nusoap/lib/nusoap.php");
$client = new nusoap_client("http://localhost/cctv/nusoap/service.php?wsdl",true);
//Register parameters
$params = array('userId' => $_SESSION['userid']);
$data = $client->call('genXML',$params);
echo $data;
}
event.script
var getXMLStream = function(){
var xmlDoc = null;
var $xml;
$.ajax({
url: 'genxml.php',//'func_manage.php?check=xmlStreaming',
async: false, // stop browser for another activity
success:function(xml){
xmlDoc = $.parseXML(xml);
$xml = $( xmlDoc )
console.log(xml);
},
error: function(jqXHR, textStatus, ex) {
alert(textStatus + "," + ex + "," + jqXHR.responseText);
}
});
return $xml;
}
ผมลองเช็ค console ใน chrome ได้แบบนี้มาครับ คือ header ที่ประกาศว่า <?xml version="1.0" encoding="UTF-8"?> มันหายไป
ขอคำแนะนำด้วยครับ มึนมากกกTag : PHP, MySQL, Ajax, jQuery
ประวัติการแก้ไข 2013-07-16 17:54:12 2013-07-16 17:54:40 2013-07-16 18:01:22
Date :
2013-07-16 17:52:38
By :
fogza
View :
1804
Reply :
2
ทำไมไม่ใช้ JSON น่ะครับ
https://www.thaicreate.com/community/php-web-service-json.html
Date :
2013-07-17 06:24:23
By :
mr.win
ก่อนหน้านี้ทำเป็นไฟล์ xml ไว้อยู่แล้วนะพี่ ทีนี้เอาข้อมูลมาใส่ในฐานข้อมูล แล้วดึงออกมาให้เป็นแบบ xml อีกทีครับ
เดี๋ยวลอง json ดูครับ ขอบคุณครับ
Date :
2013-07-17 09:16:51
By :
fogza
Load balance : Server 04