0

残念ながら、jQueryの結果しか得られていないようです。AJAXを介してパラメータを渡す正しい方法を探しています。古いブラウザのフォールバックは必要ありませんが、ライブラリは必要ありません。私がこれを見逃した別のスレッドがある場合は、リンクしてください=)

$を使用していますが、これはカスタムオブジェクトなどであり、jQueryではありません。

$.ajax({
    't':'POST',
    'u':e, 
    'd':{ajax:'1'},
    's':function(data){
        console.log(data.response);
        document.getElementById('mainc').innerHTML = data.response;
    },
    'e':function(data){
        console.log(data);
    }
});

どの呼び出し:

$.ajax = function(a){
if(!a.u){return false;};
a.t=a.t||"GET";
typeof a.a=='undefined'?true:a.a;
a.e=a.e||function(){return false;};
a.s=a.s||function(){return true;};
var x=new XMLHttpRequest();
x.open(a.t,a.u,a.a);
x.onreadystatechange=function(){
    if(x.readyState===4){
        if(x.status===200){
            a.s(x);
        }else{
            a.e(x);
        }
    }
};
a.t==="post" ? x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") : null;
x.send(a.d);

}

x.send(a.d)を渡す必要があり{ajax:'1'}ます。私も試してみまし{'ajax':'1'}'ajax=1'。私が渡そうとしているパラメータのどれもがサーバー側になっていない理由がわかりません。リクエストは問題なく送受信されているように見えますが、パラメータがサーバーにヒットしていないことは間違いありません。

4

2 に答える 2

1

XMLHttpRequest.send()を設定すると、javascript/JSONオブジェクトを受け入れませんx.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

ここで説明するように、urlencoded変数にフォーマットする必要があります。

Javascriptオブジェクトのクエリ文字列エンコーディング

またはx.setRequestHeader("Content-Type", "application/json")提案された別の答えのように使用します。

また:

a.t==="post"a.t==="POST"大文字と小文字を区別するチェックのため、リクエストヘッダーは変更されないためです。

完全に機能するコード(urlencodedデータを含む):

$ = {}

$.ajax = function(a){
if(!a.u){return false;};
a.t=a.t||"GET";
typeof a.a=='undefined'?true:a.a;
a.e=a.e||function(){return false;};
a.s=a.s||function(){return true;};
var x=new XMLHttpRequest();
x.open(a.t,a.u,a.a);
x.onreadystatechange=function(){
    if(x.readyState===4){
        if(x.status===200){
            a.s(x);
        }else{
            a.e(x);
        }
    }
};
a.t==="POST" ? x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") : null;
x.send(a.d);

}    

$.ajax({
    't':'POST',
    'u':'/', 
    'd':"ajax=1",
    's':function(data){
        console.log(data.response);
        document.getElementById('mainc').innerHTML = data.response;
    },
    'e':function(data){
        console.log(data);
    }
});
于 2012-10-22T21:45:45.857 に答える
1

リクエストヘッダーをに設定してみてください

x.setRequestHeader("Content-Type", "application/json")

これをチェックしてください。

于 2012-10-22T21:35:55.270 に答える