簡體   English   中英

jQuery AJAX與XMLHttpRequest

[英]jQuery AJAX vs. XMLHttpRequest

搜索一個答案這個問題我作為follwing代碼工作正常結果:

xhr = new XMLHttpRequest();
xhr.onreadystatechange=function()
{
    if (xhr.readyState==4 && xhr.status==200)
    {
        response = JSON.parse(xhr.responseText);
        if(typeof response =='object') {
            $('#modal-spinner-seo-update').hide('slow');
            jQuery.each(result, function(field, message) {
                $('#seo-'+field).next('div.error-message').html(message).fadeIn('fast');
            });
        } else {
            $('#modal-spinner-seo-update').hide('slow', function() {
                $("#seo-widget-message-success").fadeIn('slow').delay(2000).fadeOut('slow');
            });
        }
        return false;
    }
};
xhr.open('GET','/metas/saveMetas?model='+model+'&f_key='+f_key+'&pagetitle='+pagetitle+'&keywords='+keywords+'&description='+description+'&niceurl='+niceurl, true );
xhr.send();

但是此jQuery版本不起作用。 那么誰能發現錯誤? 有沒有? jQuery AJAX版本在我的本地主機上運行良好,但在服務器上卻沒有,但是返回403 Forbidden Error。 這是一個cakePHP項目。

因此,我希望有人可以告訴我什么地方出問題或缺少什么設置。

$.ajax({
    url: '/metas/saveMetas',
    data: {
        "model": model,
        "f_key": f_key,
        "pagetitle": pagetitle,
        "keywords": keywords,
        "description": description,
        "niceurl": niceurl
    },
    dataType: 'json',
    complete: function(){
        return false;
    },
    success: function(result) {
        if(typeof result =='object') {
            $('#modal-spinner-seo-update').hide('slow');
            jQuery.each(result, function(field, message) {
                $('#seo-'+field).next('div.error-message').html(message).fadeIn('fast');
            });
        } else {
            $('#modal-spinner-seo-update').hide('slow', function() {
                $("#seo-widget-message-success").fadeIn('slow').delay(2000).fadeOut('slow');
            });
        }
        return false;
    }
});

除了dataType之外,還需要考慮的其他事項:

由於返回403錯誤,您是否在CakePHP項目的“ MetasController”的beforeFilter()中的$ this-> Auth-> allow()方法中添加了“ saveMetas”方法?

class MetasController extends AppController {
    public function beforeFilter() {
      parent::beforeFilter();
      $this->Auth->allow('saveMetas');
    }
    ...
    ...
}

編輯:

既然您已經說過做到了,那么您有$this->autoRender = false; $this->layout = 'ajax'; 在您的saveMetas函數中?

最后,由於您可以直接訪問該頁面,因此請在初始函數調用之后執行pr( $this->request )然后在不使用AJAX的情況下訪問該頁面,以查看其內容。 禁止的403告訴我這是一個權限問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM