我想要的代码:
$.ajax({
type: "POST",
url: "_Source/ajap/ajap.nlSrch.php",
data: { sndJson : jsonData },
dataType: "json",
processData: false,
success: function(html) {
$("#srchFrm").append(html);}
});
有效的代码:
$.ajax({
type: "POST",
url: "_Source/ajap/ajap.nlSrch.php",
data: { sndJson : jsonData },
success: function(html) {
$("#srchFrm").append(html);}
});
不幸的是,当我发送第一个时,我的帖子数据看起来像“Array()”,当我使用后者时,我得到这个“数组([sndJson] => [\”8 \“,\”3 \ “,\”6 \“,\”7 \“])”。
我知道必须有一个简单的解释,但我无法弄明白。
请帮忙!
答案 0 :(得分:2)
尝试在查询字符串中发送数据......
$.ajax({
type:"POST",
url:"_Source/ajap/ajap.nlSrch.php?json="+jsonData,
dataType:"json",
success: function(data) {
$("#srchFrm").append(data);}
error: function(xhr, ajaxOptions, thrownError)
{alert("Error!");}
});
答案 1 :(得分:1)
您可以使用简写$ .post而不是使用低级别的ajax类---因为您不需要高级处理。所以,这个就足够了。
$(document.ready(function(){
$("#submit_button").click(function(){
$.post('php_script.php', {
// here's what you want to send
// important -- double quotes, 'cause It's evals as valid JSON
"var1" : "val1"
"var2" : "val2"
}, function (respond){
try {
var respond = JSON.parse(respond);
} catch(e){
//error - respond wasn't JSON
}
});
});
});
PHP代码:
<?php
/**
* Here you can handle variable or array you got from JavaScript
* and send back if need.
*/
print_r($_POST); // var1 = val1, var2 = val2
&GT;
回到你的问题, 为什么我的.ajax请求不起作用? 这是因为JavaScript会引发致命错误并停止进一步的代码执行。
只需添加
即可捕获并确定错误时机 try {} catch(){}
阻止您认为可能发生任何错误的声明
答案 2 :(得分:0)
当你指定dataType:json时,jQuery会自动评估响应并返回一个Javascript对象,在本例中是一个数组。您正在获取结果并将其作为html添加到#srchForm,因此将其转换为javascript对象没有意义。使用dataType:html,或者根本不使用。
答案 3 :(得分:0)
以上示例不可重复使用。我是可重复使用代码的忠实粉丝。这是我的解决方案。
软件设计101:
干不要重复你的自我。您应该将代码包装到对象中。这样你就可以从任何地方调用它。
var Request = {
version: 1.0, //not needed but i like versioning things
xproxy: function(type, url, data, callback, timeout, headers, contentType)
{
if (!timeout || timeout <= 0) { timeout = 15000; }
$.ajax(
{
url: url,
type: type,
data: data,
timeout: timeout,
contentType: contentType,
success:function(data)
{
if (callback != undefined) { callback(data); }
},
error:function(data)
{
if (callback != undefined) { callback(data); }
},
beforeSend: function(xhr)
{
//headers is a list with two items
if(headers)
{
xhr.setRequestHeader('secret-key', headers[0]);
xhr.setRequestHeader('api-key', headers[1]);
}
}
});
}
};
用法:
<script type="text/javascript">
var contentType = "applicaiton/json";
var url = "http://api.lastfm.com/get/data/";
var timeout = 1000*5; //five seconds
var requestType = "POST"; //GET, POST, DELETE, PUT
var header = [];
header.push("unique-guid");
header.push("23903820983");
var data = "{\"username\":\"james\"}"; //you should really deserialize this w/ a function
function callback(data)
{
//do logic here
}
Request.xproxy(requestType, url, data, callback, timeout, header, contentType);
</script>