|
|
|
อยากสอบถามเรื่องการใช้งาน ajax cross domain หน่อยครับ พอดีกำลังศึกษายังไม่ค่อยเข้าใจเท่าไรครับ |
|
|
|
|
|
|
|
ปกติแล้ว Ajax จะเรียกจากไหนก็ได้น่ะครับ ขอให้ URL นั้น ๆ สามารถใช้งานได้จริงครับ
|
|
|
|
|
Date :
2013-04-05 09:41:39 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองดูแล้วแต่มันมีปัญหาครับ ลองเช็คค่าดู มันส่งค่า post ไปยังหน้าดังกล่าวได้ แต่มัน not response แต่ถ้าหากย้ายไฟล์ ajax_getdata.php มายัง folder /sub/ จะสามารถใช้งานได้ตามปกติครับ แต่มันจะมีปัญหาตรงที่ว่า ถ้าหาก มีการสร้าง sub domain หลายๆอัน มันจะต้องก๊อบปี้ไฟล์ตัวนี้ไปทุกโฟเดอร์ ทำให้ยากต่อการแก้ไขครับ พอมีแนวทางไหมครับ
|
|
|
|
|
Date :
2013-04-05 10:14:47 |
By :
asustak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมไม่ลองเขียนเป็น function() ดูหละครับ
|
|
|
|
|
Date :
2013-04-05 10:20:54 |
By :
Ex-[S]i[L]e[N]t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองใช้การเรียกแบบ URL เต็ม ๆ น่ะครับ เช่น http://sub.domian.com
|
|
|
|
|
Date :
2013-04-05 10:32:44 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมก็เขียนไว้ เป็น function ครับ
Code (PHP)
ไฟล์ login ถูก include จาก http://localhost/shop/
หน้า index.php จาก http://sub.localhost
_BASEURL_ = http://localhost/
sent_data('<?=_BASEURL_?>shop/ajax_login.php''); // ถ้าเป็นแบบนี้มีปัญหาในการส่งค่า
แต่ถ้าย้ายไฟล์ /ajax_login.php มาไว้ใน http://sub.localhost
แล้วแก้ sent_data('ajax_login.php''); // สามารถใช้งานได้ตามปกติ
จุดประสงค์คือต้องการให้เรียกแค่ไฟล์เดียวแล้วใช้ได้กับทุก sub ครับ
ไฟล์ script.js อยู่ใน http://localhost/shop/
function sent_data(url,val)
{
$(document).ready(function(){
$.post(url,
$('#form-login').serialize(),
function(data)
{
if(data.success)
{
$("#loading").dialog({ modal: true, height: "auto", width: "250px", open: function(event, ui) { $('body').css('overflow','hidden');}, close: function(event, ui) { $('body').css('overflow','auto'); }, }).html(data.message);
setTimeout("login_pass('"+val+"');",3000);
}else{
$("#loading").dialog({ modal: true, height: "auto", width: "250px", open: function(event, ui) { $('body').css('overflow','hidden');}, close: function(event, ui) { $('body').css('overflow','auto'); }, }).html(data.message);
setTimeout("login_pass('"+val+"');",5000);
}
},'json');
return false;
});
}
|
|
|
|
|
Date :
2013-04-05 10:38:01 |
By :
asustak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้ใช้ firebug check ครับ
POST http://localhost:9999/mall/ajax_login.php 200 OK 51ms
Code (PHP)
Response Headers
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection Keep-Alive
Content-Length 223
Content-Type text/html
Date Fri, 05 Apr 2013 03:39:19 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive timeout=5, max=100
Pragma no-cache
Server Apache/2.2.8 (Win32) PHP/5.2.6
Set-Cookie PHPSESSID=d9ad523533454f5b4708e9fd5bf4591a; path=/
X-Powered-By PHP/5.2.6
Request Headers
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language th-th,th;q=0.8,en-us;q=0.6,en-gb;q=0.4,en;q=0.2
Content-Length 136
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Host localhost:9999
Origin http://test.localhost:9999
Referer http://test.localhost:9999/
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0
|
ประวัติการแก้ไข 2013-04-05 10:52:43
|
|
|
|
Date :
2013-04-05 10:39:46 |
By :
asustak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองใช้
Code (PHP)
$.ajax({
url: url,
error: function(jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
Check ค่าดูมันแจ้งว่า Not connect. Verify Network. jqXHR.status === 0
ผมลองเพิ่ม console.log(jqXHR); มันแจ้งว่า Object { readyState=
0
, status=
0
, statusText=
"[Exception... "Failure"...: line 8526" data: no]"
}
statusText
"[Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost:9999//mall/js/jquery-1.9.1.js :: .send :: line 8526" data: no]"
|
ประวัติการแก้ไข 2013-04-05 11:46:44
|
|
|
|
Date :
2013-04-05 11:33:52 |
By :
asustak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|