2013-07-16 68 views
0

根據相同的原產地策略,我不能使用常規json進行ajax調用,所以我使用jsonp代替。 我有一個簡單的輸入字段,類名是「newCaller」。 在我的JS文件Jsonp回調問題:輸入文本未定義

$(document).on("blur", ".newCaller", function(){ 
    var name = $(this).val(); 
    var tel = $(this).siblings(".tel").text(); 
    //console.log(name+tel); 
    $.ajax({ 
    type: 'GET', 
    url: 'xxx.xxx.com/phpFunc.php', 
    data: ({ 'name' : name, 'tel' : tel }), 
    dataType: 'jsonp', 
    //I tried success instead of jsonpCallback as well 
    jsonpCallback: function(data){ 
     console.log(data); 
    } 
    }); 
}); 

這裏是PHP:

<?php 
$name = $_GET['name']; 
$tel = $_GET['tel']; 
echo $name.$tel; 
?> 

當AJAX功能被觸發,從字段中的值是不確定的。例如,我輸入「測試」到文本字段和觸發功能,請看下面的圖片(對不起,黑線,隱私政策) enter image description here

我用成功回調,並返回幾乎同樣的事情,「XXX沒有定義」。 有人能告訴我如何修復它嗎?謝謝!

+0

檢查JSON語法。您從PHP文件返回的內容不是JSON。 – Fracsi

+0

你沒有將值轉換爲json在php page.u需要給$ arr = array($ name => $ tel); json_encode($ arr); – nickle

回答

1

這些問題主要是服務器端,因爲該腳本不足以支持JSONP

  1. 它具有output valid JSON

    json_encode($name . $tel); 
    
  2. ,包括填充(在callback):

    echo $_GET['callback'] . '(' . json_encode($name . $tel) . ');'; 
    

而且,你會想改變jsonCallbacksuccess

+0

太棒了!這工作!你是我的英雄!我得到了「資源解釋爲腳本,但用MIME類型text/html:」傳輸。這是什麼意思? – nich

+0

@nich啊。你必須指定'Content-Type':['header('Content-type:application/javascript');'](http://stackoverflow.com/a/111306)。在'echo'之前添加。 –

+0

再次感謝,我可以再問你一個問題。我怎樣才能將$ tel和$名稱提取回我的js。在我的PHP結尾,我確實echo $ name和$ tel。我試過$ name = $ _ GET ['callback']。 '('。json_encode($ name)。');';和$ tel = $ _ GET ['callback']。 '('。json_encode($ name)。');';.但它不會工作。你能幫我一下嗎? – nich

0

烏爾不轉換值在PHP頁面phpFunc.php.u到JSON需要給

$arr=array($name=>$tel); 
json_encode($arr); 

因爲烏爾在JSON做format..so u需要得到JSON格式而已。不過數據烏爾在正常的文本格式發送搜易得的mime顯示/類型錯誤

檢查確切的錯誤嘗試此

$(document).on("blur", ".newCaller", function(){ 
var name = $(this).val(); 
var tel = $(this).siblings(".tel").text(); 
    //console.log(name+tel); 
    $.ajax({ 
    type: 'GET', 
    url: 'xxx.xxx.com/phpFunc.php', 
    data: ({ 'name' : name, 'tel' : tel }), 
    error: function(xhr, textStatus, errorThrown) { 
    alert(errorThrown); 
    //alert(xhr.responseText); 
     return false; 
     }, 
    dataType: 'jsonp', 
    //I tried success instead of jsonpCallback as well 
    success: function(data){ 
    console.log(data); 
} 
}); 

});

+0

感謝您的幫助。我在代碼中添加了這兩行代碼。然後我做「echo $ arr;」。我重新運行我的代碼,但仍然獲得「資源解釋爲腳本,但使用MIME類型text/html:」傳輸。我做錯了什麼? – nich

+0

ru在phpFunc.php頁面中執行json編碼,並使jsonpCallback成功 – nickle